【问题标题】:Code in popup.js not being run (chrome/edge extension)popup.js 中的代码未运行(chrome/edge 扩展)
【发布时间】:2021-10-06 20:35:17
【问题描述】:

相关:

The Chrome extension popup is not working, click events are not handled

Javascript in Google Chrome popup extension not running

Cannot get Chrome popup.js to use console.log

manifest.json

{
    "permissions": [
        "activeTab",
        "tabs",
        "storage",
        "<all_urls>",
        "*://*.youtube.com/*",
    ],
    "chrome_url_overrides": {
        "newtab": "popup/popup.html"
    },
    "browser_action": {
        "default_title": "My extension"
    },
    "background": {
        "scripts": [
            "background/background.js"
        ]
    },
    "content_scripts": [{
        "js": [
            "content/content.js"
        ],
        "matches": [
            "<all_urls>",
            "*://*.youtube.com/*"
        ],
        "run_at": "document_end",
        "all_frames": true,
        "match_about_blank": true
    }],
    "web_accessible_resources": [
        "*.html",
        "images/*"
    ],
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}

popup.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>My Extension</title>
</head>

<body>
<div>dkafafdafldafkla This shows</div>
</body>

<script src="popup.js">
</script>

</html>

popup.js

document.addEventListener("DOMContentLoaded", () => {
  console.log("Adding dom load event listener; we don't get here :(");
  chrome.tabs.create({
    active: true,
    url: "https://my.site.com/",
  });
});

该扩展似乎不可调试:

控制台没有错误(网页和后台脚本);为什么点击弹窗时url没有打开(文本形式popup.html出现在新标签中)。

【问题讨论】:

    标签: javascript google-chrome-extension microsoft-edge microsoft-edge-extension


    【解决方案1】:

    根据您的描述和您提供的清单代码,屏幕截图显示“检查弹出窗口”选项已禁用(灰显),所以我认为您的问题是 manifest 中没有 "default_popup" 声明.或者你可以使用chrome.browserAction.setPopup来解决问题。

    这是一个类似的案例:Disable "inspect popup" menu entry in chrome extensions

    【讨论】:

    • 添加了default_popup 显示html,但popup.js 中的代码没有运行。添加了答案;不确定它是否与 chrome 扩展设计一致。
    【解决方案2】:

    设法让它按预期运行;从上面的manifest.json 中删除chrome_url_overrides 并将以下内容添加到background.js

    chrome.tabs.onCreated.addListener(function(tab) {
      console.log("Current tab: ", tab.url);
      if (tab.url === "edge://newtab/") {
        chrome.tabs.update(tab.id, {
          url: "https://my.site.com/",
        });
      }
    });
    

    【讨论】:

    • 感谢您发布此问题的解决方案。当您的答案可以标记时,您可以将其标记为已接受的答案。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2013-03-12
    相关资源
    最近更新 更多