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

Prevent redirect-loop in Javascript-function

本文关键字:重定向 循环 Javascript 函数 阻止      更新时间:2023-09-26

我得到了一个资源,它可以通过两个url获得,例如:mygoodlookingurl.de/nice.jsf和mybadlookingirl.de/bad123454423523413413.jsf

我不得不调用这个不好看的url一次,然后我想重定向。目前,我使用了JQuery的document-ready()函数并调用cleanUrl(),该函数通过top.locationhref="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;
    }
}

提前谢谢。

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

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

谢谢Jack,我能够通过在服务器端处理这个问题

return mygoaljsffile.jsf?faces-redirect=true; 

在我的Bean方法中。

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

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