use*_*895 10 google-chrome-extension
我试图将少量额外的参数附加到用户键入的URL(在页面加载之前).有可能吗?
例如,如果用户输入www.google.com
,我想追?q=query
加到url(最终:www.google.com?q=query
.
谢谢
该WebRequest的 API可能是你所需要的.此代码位于您的后台页面中:
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if( details.url == "http://www.google.com/" )
return {redirectUrl: "http://www.google.com/?q=defaultquery" };
},
{urls: ["http://www.google.com/*"]},
["blocking"]);
Run Code Online (Sandbox Code Playgroud)
这是一个重定向访问一个非常具体的规则http://www.google.com/
有http://www.google.com/?q=defaultquery
,但我认为你可以看到如何将它扩大到包括更多的功能.
请注意,这将重新路由所有到达的尝试http://www.google.com/
,包括Ajax请求和iframe.
根据文档,您需要为计划拦截的每个主机添加webRequest
和webRequestBlocking
权限以及主机权限:
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*.google.com/",
...
],
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,我仍然为未来的读者回答。
修改查询参数有点棘手,因为您可能会陷入无限循环,而 Chrome/Firefox 可能会检测到它并处理请求 URL 的当前状态。
我在我的 chrome 扩展Requestly中遇到过这种情况,其中用户使用Replace Rule
并替换www.google.com
为www.google.com?q=query
或执行类似的操作。
这种方法的问题是浏览器在添加查询参数后拦截请求 URL,因此该参数将被多次添加并损坏 URL。因此,您必须确保以下任一条件:-
正如 @apsillers 在他的回答中正确指出的那样,您必须使用 webRequest API 来对 URL 进行任何修改。请看一下他的答案 并相应地编写您的代码。
以防万一,您正在寻找现有的解决方案,请考虑尝试Requestly 的查询参数规则。这是它的外观的屏幕截图:-
对于 Firefox,您可以从其主页下载 Requestly 。
归档时间: |
|
查看次数: |
5283 次 |
最近记录: |