【发布时间】: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