我想制作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'});
}
});
为什么这不起作用?
答案 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+%2Fg
和abort it using a blocking
onBeforeRequest listener,然后是update the tab URL到http://ultra.com/g
。您可以在StackOverflow和文档中找到示例。