为什么在Chrome标签中更改网址,在输入指定网址时,它不会更新标签网址?

时间:2017-03-14 17:27:00

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

我想制作Chrome扩展程序时,例如我输入此地址:

ul/g

自动更新标签网址:

http://ultra.com/g

这是我的manifest.json:

{
  "manifest_version": 2,

  "name": "Test ",
  "description": "Test",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.htm"
  },
  "background": {
    "scripts": [
      "src/background.js"
    ],
    "persistent": true
  },
  "permissions": [
    "tabs",
    "activeTab",
    "http://*/*",
    "<all_urls>"
  ],
  "content_scripts" : [{
        "matches" : [ "http://test.com/*","<all_urls>"],
        "js" : ["myScript.js"]
    }]
    }

并在我的background.js文件中:

chrome.tabs.onUpdated.addListener( function( tabId,  changeInfo,  tab) {

       if(tab.url=="ul/g"){
            chrome.tabs.update(tab.Id, {url: 'http://ultra.com/g'});
       }
});

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

假设整个问题为why this not working?,则答案是因为ul/g不是网址,因此Chrome会将文本重定向到搜索引擎。这是chrome.tabs.onUpdated看到的内容:

{title: "ul/g - Google Search"}
{status: "loading", url: "https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=ul/g&*"}
{status: "complete"}

您可以使用webRequest API拦截多功能框搜索请求。例如,默认情况下使用谷歌搜索,您可以看到如下请求:

  

https://www.google.com/complete/search?client=chrome-omni&..............&q=ul%2Fg ..............

因此,请检查网址是否包含与{1}}匹配的&q=参数\w+%2Fgabort it using a blocking onBeforeRequest listener,然后是update the tab URLhttp://ultra.com/g。您可以在StackOverflow和文档中找到示例。