【问题标题】:undefined URL in chrome extensionchrome 扩展中未定义的 URL
【发布时间】:2019-10-13 23:15:39
【问题描述】:

我正在制作一个简单的扩展程序,它获取当前选项卡的 URL,并在我单击“创建”按钮时将其保存到存储中,并在单击“转到”按钮时检索 URL。

我得到了未定义的选项卡和 url 来调试这段代码。我是 chrome 扩展和 javascript 的新手,非常感谢您的帮助! :)))

这是我的 popup.js

$(function() {
    $('#create').click(function() {
        var tab;
        var myUrl;
        chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs){
            tab = tabs[0];
            myUrl = tab.url;
        });

        chrome.storage.sync.set({'newUrl': myUrl});

    });
});

popup.html

 <script src= "jquery-3.4.1.min"></script>
    <script src = "popup.js"></script>;


</head>
<body>
    <input type = "button" id = "create" value = "create">
    <input type = "button" id = "go" value = "go to">
 </body>

manifest.json

"permissions": [
    "tabs",
    "activeTab",
    "bookmarks",
    "contextMenus",
    "storage",
    "*://*/*"
],

【问题讨论】:

  • 我不知道 API,但我想说chrome.tabs.query() 很可能是异步的。您应该在提供给query()的回调函数中调用chrome.storage.sync.set()
  • 如果你能提供更多的代码会更好......具有正确的文件名,以便可以检查并尝试提供确切的解决方案。 chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) { console.log(tabs[0]); });
  • @Vishal 我添加了更多代码
  • @Xxx,谢谢....让我检查一下,很快就会回复您。如果可能的话,尝试添加创建标签 from.background.js 的代码...你可以使用消息传递动作从 popup.js 调用 background.js 中的函数

标签: javascript google-chrome-extension


【解决方案1】:

chrome.* api 只能从后台和弹出脚本访问。 那些chrome.* api 你已经写在 injectScript 或 content script 中了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多