0

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

我必须调用一次看起来很糟糕的 url,然后我想重定向。目前我使用了 JQuery 的 document-ready()-function 并调用 cleanUrl() ,它通过 top.location.href = "mygoodlookingurl.de/nice.jsf"; 重定向。

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

这是 JS 代码(我正在使用一种技巧来读取带有创建的锚标记的 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;
    } 
}
4

2 回答 2

0

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

var cleanedUrl = "https://xxx.xxx.xx/xxx.jsf";
if(top.location.href !== cleanedUrl){
    top.location.href = cleanedUrl;
}
于 2012-08-27T12:45:07.457 回答
0

谢谢杰克,我能够在服务器端处理这个问题

return mygoaljsffile.jsf?faces-redirect=true; 

在我的 Bean 方法中。

于 2012-08-29T13:54:17.790 回答