我試圖在用戶輸入的網址(頁面加載前)附加一些額外的參數。有可能嗎?是否可以使用Chrome擴展程序重寫網址(使用額外參數)
例如,如果用戶鍵入www.google.com
,我想追加?q=query
到URL(決賽:。www.google.com?q=query
感謝
我試圖在用戶輸入的網址(頁面加載前)附加一些額外的參數。有可能嗎?是否可以使用Chrome擴展程序重寫網址(使用額外參數)
例如,如果用戶鍵入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"]);
這是重定向訪問http://www.google.com/
與http://www.google.com/?q=defaultquery
一個非常具體的規則,但我認爲你CA ñ瞭解如何擴展它以包含更多功能。
請注意,這將重新路由全部嘗試達到http://www.google.com/
,包括Ajax請求和iframe。
每文檔,你將需要添加webRequest
和webRequestBlocking
權限,與每個主機的主機權限,沿着你打算攔截:
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*.google.com/",
...
],
這是一個老問題仍然我回答它爲未來的讀者。
查詢參數的修改有點棘手,因爲您可以在無限循環中終止並且chrome/firefox可以檢測到它並處理請求Url的當前狀態。
我在Chrome擴展Requestly,用戶使用Replace Rule
與www.google.com?q=query
更換www.google.com
或沒有類似的東西遇到這種情況。
這種方法的問題是瀏覽器可能會在添加查詢參數後攔截請求url,因此參數將被多次添加並損壞url。因此,您必須確保以下兩項之一: -
正如@apsillers在他的回答中指出的那樣,您必須使用webRequest API來對URL進行任何修改。請看看他的answer 並相應地編寫你的代碼。
爲了以防萬一,您正在尋找已有的解決方案,請考慮嘗試Requestly's Query Parameter Rule。下面是它是如何看起來像一個截圖: -
對於Firefox,你可以下載Requestly from its home page.
哪個文件應該我寫這篇文章的代碼,我們如何添加權限此。 – anwerj 2015-12-08 17:39:46
@anwerjunaid從上面的文字:「代碼進入你的背景頁面。」必要的權限在[webRequest文檔的第一段](http://code.google.com/chrome/extensions/webRequest.html)中有介紹,我已經將其鏈接到上面。您需要針對要攔截的每個網站的「webRequest」,「webRequestBlocking」和主機權限。 – apsillers 2015-12-08 17:43:08