2012-08-27 49 views
0

我得到一個的ressource這是可以通過兩個網址,例如:mygoodlookingurl.de/nice.jsf和mybadlookingurl.de/bad123454423523413413.jsf防止重定向循環的Javascript功能

我有打電話給差一次性瀏覽網址,之後我想重定向。目前我使用JQuery的document-ready()函數並調用cleanUrl(),它通過top.location.href =「mygoodlookingurl.de/nice.jsf」重定向。

不幸的是發生了一個無限循環,因爲在onload上加載url後,函數會被一次又一次地調用。該怎麼辦?

這裏是JS-代碼(我用了一招閱讀與創建錨標記的網址):

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; 
    } 
} 
+0

什麼是'document.url'? – David

+0

你不能使用服務器端代碼嗎? –

回答

0

感謝傑克,我能處理這個問題的服務器端通過

return mygoaljsffile.jsf?faces-redirect=true; 

在我的豆方法。

0

只是把重定向裏面的某種形式的條件測試?

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

問題是:currentUrl在第一次重定向後未更新(請參閱post中的更新代碼)。 – Jochen