防止Javascript函数中的重定向循环

时间:2012-08-27 12:09:54

标签: javascript jquery redirect

我有一个可通过两个网址获得的资源,例如:mygoodlookingurl.de/nice.jsf和mybadlookingurl.de/bad123454423523413413.jsf

我必须将这个看起来很糟糕的网址调用一次,之后我想重定向。目前我使用了JQuery的document-ready()函数并调用了cleanUrl(),它通过top.location.href =“mygoodlookingurl.de/nice.jsf”重定向;

不幸的是发生了无限循环,因为在onload上加载url后,函数会一次又一次地被调用。该怎么办?

这是JS-Code(我正在使用一个技巧来读取带有创建的锚标记的URL):

function cleanUrl(){
    var url = document.url;
    var a = "";
    a = document.createElement( 'a' );
    a.href = url;
    if ( a.pathname == "/xxx/undefined"){
        var cleanedUrl = "https://xxx.xxx.xx/xxx.jsf";
        top.location.href = cleanedUrl;
    }
}

提前致谢。

更新:currentUrl在第一次重定向后没有更新,因此仍然会发生无限循环。

function cleanUrl(){
    var cleanedUrl = "https://xxx.xxx.xx:xxx.jsf";
    var currentUrl = window.location.href;
    if ( currentUrl != cleanedUrl){
        top.location.href = cleanedUrl;
    } 
}

2 个答案:

答案 0 :(得分:0)

只是将重定向置于某种形式的条件测试中?

var cleanedUrl = "https://xxx.xxx.xx/xxx.jsf";
if(top.location.href !== cleanedUrl){
    top.location.href = cleanedUrl;
}

答案 1 :(得分:0)

感谢杰克,我能够通过

处理这个问题
return mygoaljsffile.jsf?faces-redirect=true; 

在我的Bean方法中。