无法获取标签页网址 - Chrome 扩展程序

Unable to get tab url - Chrome extension

本文关键字:Chrome 扩展 程序 获取 标签      更新时间:2023-09-26

在阅读了与此问题相关的其他各种帖子后,我仍然无法找到检索当前页面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。这将是复杂的,但可以做到。