2011-10-17 84 views
2

我將如何去重寫/捕捉JavaScript重定向?捕捉/重寫Javascript重定向

例如:

window.location.href="http://example.com"; 

值 「http://example.com」 會被抓住,也許改變。

+0

這可能有幫助嗎? http://stackoverflow.com/questions/3522090/event-when-window-location-href-changes – Asken

回答

4

AFAIK你可以捕捉這個事件,但你不能改變目標網址。您只能提示用戶是否要取消重定向。爲此,您可以訂閱before unload event

window.onbeforeunload = function (e) { 
    var e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = 'Are you sure you want to leave the site?'; 
    } 

    // For Safari 
    return 'Are you sure you want to leave the site?'; 
}; 
+0

好吧,如果你能抓住它,你可以改變目標:返回false,因此取消事件並激活一個新的用正確的URL ... – Boldewyn

+2

@Boldewyn:Returnign'false'不應該工作。您只能返回一個字符串。 – alex

+0

這是真的,我已經嘗試過,儘管我不知道如何獲得目標。我只能用這個答案作爲最後的手段。 – Trevor

1

你可以嘗試使用__defineSetter()__但它可能不會在主機對象。

+0

謝謝,我不完全確定如何使用它,是否有可能提供一個小例子? – Trevor

0

找到使用這一切代碼:

window.location.href="http://example.com"; 

它改成這樣:

openURL("http://example.com"); 

然後,實現這個功能,你可以控制重定向,但是你想:

function openURL(url) { 
    // examine url and decide if you want to modify it 
    window.location = url; 
} 
+1

一些調用我沒有控制權,所以我需要一種方法來捕獲任意重定向。 – Trevor

+0

我不知道有什麼方法可以從普通的JavaScript中捕捉所有瀏覽器中的任意javascript重定向。 – jfriend00