我想寫的是所有網絡流量重定向到特定域的擴展,讓我們說wikipedia.org,到中間頁,上面寫着類似「哇,小傢伙,你馬上就要去維基百科。 你確定嗎?」其次是是和否按鈕。Chrome擴展程序:如何重定向到自定義HTML頁面以響應特定的Web請求?
如何到特定的URL請求做出響應,並用自定義更換所需的頁面時,它滿足的領域是與「wikipedia.org」頁面中的條件?
我想寫的是所有網絡流量重定向到特定域的擴展,讓我們說wikipedia.org,到中間頁,上面寫着類似「哇,小傢伙,你馬上就要去維基百科。 你確定嗎?」其次是是和否按鈕。Chrome擴展程序:如何重定向到自定義HTML頁面以響應特定的Web請求?
如何到特定的URL請求做出響應,並用自定義更換所需的頁面時,它滿足的領域是與「wikipedia.org」頁面中的條件?
你可以做到這一點使用webRequest
功能,後臺頁面和自定義頁面是和沒有按鈕。例如,寫在後臺頁面類似的東西:
var URLStorage;
function interceptRequest(request)
{
if(request && request.url)
{
if(request.type == "main_frame") // new page/site is loading in main window
{
if(request.url.indexOf("wikipedia.org") > -1)
{
URLStorage = request.url;
return {redirectUrl: chrome.extension.getURL("confirmation.html")};
}
}
}
}
chrome.webRequest.onBeforeRequest.addListener(interceptRequest, {urls: ["*://*/*"]}, ['blocking']);
這個例子,如果維基百科中提到的域不嚴格檢查,但我這樣做是爲了便於說明。在我的真實代碼中,使用了一個特殊的類「URL」,用於解析傳遞的url併爲其每個部分提供屬性,因此可以選擇性地檢查它們。
在confirmation.html
只需放置2個按鈕,並將它們綁定到適當的代碼,例如重定向到請求的站點,如果用戶回答「是」。
$('#okbutton').click(function()
{
document.location.href = chrome.extension.getBackgroundPage().URLStorage;
});
不要忘記提「的WebRequest」和「webRequestBlocking」在您的清單中permissions
部分。
您可以創建注入javascript代碼到每個網頁的用戶訪問內容的腳本。在您的內容腳本中,您可以讓js檢查當前的url與無效的url,並相應地重定向它們。
我認爲內容腳本在頁面加載後加載,因此用戶可能會看到他們正在查找的頁面並將其重定向到目標頁面。點擊這裏,查看內容腳本文件: http://developer.chrome.com/extensions/content_scripts.html
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
}
],
...
}
「匹配」你應該做類似的東西數組
"matches": ["http://www.*.com/*", "http://*.com/*, "https://www.*.com/*", "https://*.*.com/*]
和「JS」將是您的JavaScript文件的名稱,你想用來將注入寫入頁面。
類似:
if(window.location == "http://wikipedia.com"){
window.location.href = "http://mysplashpage.com";
}
當然,這js的不會在所有情況下工作,例如,如果用戶試圖獲得對目標網站的目錄。你可能會需要一些正則表達式的檢查或一些其他功能,如協議和主機如下定義:http://css-tricks.com/snippets/javascript/get-url-and-url-parts-in-javascript/
您的匹配模式都不是有效的。閱讀[documentation](http://developer.chrome.com/extensions/match_patterns.html)。我建議使用''run_at「:」document_start「',以便重定向在頁面呈現之前發生。 –