我正在尝试制作一个允许用户保存当前网址的Chrome按钮。稍后我会想要在他们重新登录时将该网址发送到网站的数据库,但这超出了我当前的任务。
我想要的功能可以在这张图片中总结出来:
我在下面的网址中发现了这个问题,但Chrome扩展程序的规则已经更改,并且该代码不再有效。 Get URL and save it | Chrome Extension
一条评论说: "从manifest_version 2开始,上述代码将无效。所有脚本都应放在一个单独的文件中。然后将其包含在主html中。新版本明确指出不允许使用内联脚本和事件处理程序。 "
我无法弄清楚如何实现此人的建议。
到目前为止我所拥有的:
popup.hmtl
<html>
<body>
<p id="currentLink">Loading ...</p>
<hr />
<ul id="savedLinks"></ul>
<script type="text/javascript" src="popup.js"></script>
</body>
</html>
popup.js
chrome.tabs.query({'active': true}, function (tabs) {
var url = tabs[0].url;
});
清单:
{
"name": "URL Saver",
"version": "1.1",
"description": "A browser action that saves the url of the current open tab",
"permissions": [
"tabs"
],
"browser_action": {
"default_title": "URL CATCHER",
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"manifest_version": 2,
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'"
}
现在,如果我点击按钮,我就会得到一个&#34;正在加载... _______&#34;消息
答案 0 :(得分:1)
除了在变量url中存储tabs [0] .url的值之外,你的Javascript实际上并没有做。我怀疑你正在尝试使用变量&#34; url&#34;超出匿名函数的范围。这不起作用,因为你在回调中声明了var。
您的下一个停靠点可能是在回调之外声明了url并将变量分配到内部,这也不起作用,因为该函数是异步。在您尝试访问变量时的含义,它未设置。请参阅我回复给你的评论,以便详细说明这一点。
在您的manifest.json中,请确保包含&#39;标签&#39;如下
"permissions": [
"tabs"
],
您可以使用
访问它var getTab = function(tab){
console.log(tab);
};
chrome.tabs.query({currentWindow: true, active: true}, function (tabs){
getTab(tabs[0]);
});