获取当前 URL 并使用 chrome 扩展保存它
Posted
技术标签:
【中文标题】获取当前 URL 并使用 chrome 扩展保存它【英文标题】:Fetch current URL and save it with a chrome extension 【发布时间】:2015-12-27 06:33:10 【问题描述】:我正在尝试制作一个允许用户保存当前 URL 的 chrome 按钮。稍后,当他们重新登录时,我想将该 URL 发送到网站的数据库,但这超出了我当前的任务。
我想要的功能可以用这张图来概括:
我在下面的 URL 中发现了这个问题,但是 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'"
现在,如果我单击该按钮,我只会收到“正在加载..._______”消息
【问题讨论】:
自该评论以来,该答案已更新。 manifest_version 2 不再有问题。 我不太明白你期望代码做什么。为什么将某些东西分配给(本地!)变量无论如何都会改变页面。 该功能无法在该图像中总结。请说明您希望发生什么以及何时发生。 我使用了下面的答案,它帮助我走得更远。我不是要成品,我只是想将其保存为局部变量,然后我会找到另一种方法将其推送到本地存储或直接推送到我网站的 API 【参考方案1】:除了将 tabs[0].url 的值存储在变量 url 中之外,您的 Javascript 实际上并没有做任何事情。我怀疑您正在尝试在匿名函数范围之外使用变量“url”。这将不起作用,因为您已在回调中声明了 var。
您的下一个调用端口可能是在回调外部声明 url 并在内部分配变量,这也将不起作用,因为函数是 异步。这意味着当您尝试访问该变量时,它尚未设置。请参阅我回复您的评论,以获得详细说明这一点的好帖子。
在您的 manifest.json 中,确保您包含对“标签”的权限,如下所示
"permissions": [
"tabs"
],
您可以使用它访问它
var getTab = function(tab)
console.log(tab);
;
chrome.tabs.query(currentWindow: true, active: true, function (tabs)
getTab(tabs[0]);
);
Chrome Tabs API
【讨论】:
我已经编辑了这篇文章并包含了我到目前为止的内容。它包含您的建议,但仍无法正常运行。 试试修改后的代码。看看这个很棒的 post 解释为什么你的代码不工作。 这可以通过 activeTab 权限来完成,但这与 OP 无关,没有解释他们想用 url 做什么。以上是关于获取当前 URL 并使用 chrome 扩展保存它的主要内容,如果未能解决你的问题,请参考以下文章
在 chrome 扩展中,如何从当前 chrome 用户以外的 gmail 用户获取访问令牌?