2011-10-17 50 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