无法获取标签页网址 - Chrome 扩展程序
Unable to get tab url - Chrome extension
在阅读了与此问题相关的其他各种帖子后,我仍然无法找到检索当前页面URL的方法。它要么不返回任何内容,要么返回"未定义"或"chrome://extensions/"。
我的代码如下...
样品.js
var url = [];
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
url = tabs[0].url;
});
var submitLink = chrome.contextMenus.create(
{
"title": "Submit " + url
});
manifest.json
{
"name": "some name",
"description": "some description",
"version": "0.6",
"permissions": ["tabs","contextMenus"],
"background": {
"scripts": ["sample.js"]
},
"manifest_version": 2
}
有没有人知道为什么我无法获得 URL?我在某处读到这是因为chrome.tabs.query函数是异步的,因此chrome.contextMenus.create是在chrome.tabs.query检索URL之前执行的。我对javascript几乎没有经验,所以我不确定如何解决这个问题。
您的帮助将不胜感激。
试试
var url = [];
var submitLink;
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
url = tabs[0].url;
submitLink = chrome.contextMenus.create({
"title": "Submit " + url}
);
});
你的代码意义不大。
后台页面代码会在 Chrome 启动后立即执行。一次。因此,您获得的URL充其量是当时打开的页面。
此外,上下文菜单由所有选项卡共享;将特定的URL放在那里会很奇怪。您需要根据当前选项卡/URL 不断更新菜单,例如"提交此页面"。
忠告:不要这样做。在这一点上,这确实是不必要的复杂性。如果需要,请创建确认对话框,但保持上下文菜单项中立。
但是,如果您绝对必须这样做,则需要从 API tabs
挂钩事件,例如使用 onActivated
更改活动选项卡和使用 onUpdated
/onReplaced
更改 URL。这将是复杂的,但可以做到。
相关文章:
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 可以从Chrome扩展修改窗口对象吗
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在Chrome扩展内部输出Google API调用
- 检查是否存在使用chrome扩展的javascript库
- 从Chrome扩展访问Google Cloud SQL数据库
- Chrome扩展,Chrome.tabs.query的结果未定义
- 为tweet构建chrome扩展
- 在chrome扩展中使用AJAX获取目录中的文件数