获取当前网址并使用Chrome扩展程序保存

时间:2015-09-29 16:59:17

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

我正在尝试制作一个允许用户保存当前网址的Chrome按钮。稍后我会想要在他们重新登录时将该网址发送到网站的数据库,但这超出了我当前的任务。

我想要的功能可以在这张图片中总结出来:

screenshot

我在下面的网址中发现了这个问题,但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;消息

1 个答案:

答案 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]);
});

Chrome Tabs API