javascript - Chrome 扩展 : page loaded event and update url

标签 javascript google-chrome-extension

我想更改 chrome 中当前选项卡的 url 并重新加载页面。 我尝试了这段代码但不起作用,这里的任何帮助将不胜感激。

背景.js:

function updateUrl(){

    chrome.tabs.getCurrent(function (tab) {

        var tabUrl = encodeURIComponent(tab.url);

        var myNewUrl = tabUrl + "some text";

        chrome.tabs.update(tab.id, {url: myNewUrl});
   })
}

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
    if (changeInfo.status == 'complete') {

        updateUrl();

    }
})

manifest.json:

{
  "name": "test",
  "version": "0.1",
  "manifest_version": 2,

  "permissions": [
    "tabs",
    "webNavigation",
    "http://www.example.com/*"
  ],

  "background": { "scripts": ["background.js"] },

  "content_scripts":
  [
    {
      "matches": ["http://www.example.com/*"], 
      "js":  ["background.js", "jquery.js"]
    }
  ] 
}

最佳答案

从您的 list 来看,您似乎正在尝试将background.js 作为内容脚本和后台脚本包含在内。 chrome.tabs 在内容脚本中不可用,因此这不起作用。

根据您的具体用例,如果您想附加特定 URL,您可以使用 chrome.webRequest API 来实现这一点。

背景.js:

chrome.webRequest.onBeforeRequest.addListener(function (details) {
    return {
        redirectUrl: details.url + "some text"
    }
}, {
    urls: ["http://www.example.com/*"]
}, ["blocking"]);

manifest.js:

{
  "name": "test",
  "version": "0.1",
  "manifest_version": 2,
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "http://www.example.com/*"
  ],
  "background": { 
    "scripts": [
      "background.js"
    ] 
  }
}

这将在浏览器对“http://www.example.com/ *”发出的每个请求的末尾添加“一些文本”

如果您确实想使用内容脚本来执行此操作,那么您需要查看 message passing 。这将允许您从内容脚本调用后台脚本(可以使用chrome.tabs)。消息发送后,后台页面就可以更新选项卡。

关于javascript - Chrome 扩展 : page loaded event and update url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38592919/

相关文章:

javascript - pixi.js 中关于带有枢轴和旋转的 Graphics 对象的奇怪效果

javascript - 咕噜声,类型错误 : Object has no method 'Split'

css - 将 Bootstrap/Bootstrap-Vue 导入 Scoped CSS

javascript - 在时间用完后重新打开 Chrome 时,Chrome 扩展程序警报会关闭吗?

由于 'unsafe-eval',Chrome 扩展中的 Javascript Tensorflow 无法正常工作

javascript - 无法在 jquery 代码 ('#' + 添加上使用方法

javascript - 在 IE 10 浏览器中,链接按钮出现错误 __dopostback is undefined

javascript - HTML 5 Canvas : remove color gradient from line edges

javascript - 使用 Chrome Extensions API 以编程方式更改 Chrome 选项卡颜色

javascript - Chrome 的executeScript 函数不起作用