2011-07-20 20 views
1

在效應初探至this question我寫了這個功能(當然,我做了它在這個問題的答案多一點精心當時):這是重定向的正確方法嗎?

function redirectto(url) { 
    window.location.href = url; // first try it the easy way 

    // we're going to do it the hard way - create a temporary form and submit it 
    var tmpform = document.createElement("form"); 
    tmpform.method = "GET"; 

    // add data, use hidden fields for querystrings 
    if (url.indexOf("?") == -1) { 
     tmpform.action = url; 
    } else { 
     var urlparts = url.split("?", 2); 
     tmpform.action = urlparts[0]; 

     var queryparts = urlparts[1].replace(/\+/g, " ").split(/[&;]/g); 
     for (var i = 0; i < queryparts.length; i++) { 
      var pair = queryparts[i].split("="); 
      var key = pair[0]; 
      var value = pair.length > 1 ? pair[1] : ""; 

      var field; 
      try { // sigh IE, can't you do ANYTHING right? 
       field = document.createElement("<input type=\"hidden\" name=\"" + key + "\" value=\"" + value + "\">"); 
      } catch(err) { 
       field = document.createElement("input"); 
       field.type = "hidden"; 
       field.name = key; 
       field.value = value; 
      } 
      tmpform.appendChild(field); 
     } 
    } 

    // add to page and submit 
    document.body.appendChild(tmpform); 
    tmpform.submit(); 
} 

我寫了3個downvotes,所以我的問題是,答案是:這是正確的這樣做的方式還是簡單window.location.href = url夠了嗎?

+0

爲什麼你認爲'window.location.href = url;'會在IE中失敗? – epascarello

+0

爲什麼提交一個表單而不是在頁面中注入''並點擊它。 – Raynos

回答

3

window.location.href = urla有效的重定向瀏覽器的方式。除非絕對必要,否則我通常不鼓勵瀏覽器重定向。往往很少有好的原因通過JS重定向。

+0

當然,這個標準是有效的,但我的問題是它是否會一直工作(瞪着IE)。 – orlp

+0

@nightcracker正如我上面評論:你爲什麼認爲'window.location.href = url;'會在IE中失敗? – epascarello

+0

OP中鏈接的問題。 – orlp

0

它更好地使用內置的方法,因爲它是更高效,更廣泛地支持大多數運行JavaScript的瀏覽器,也需要更少的內存,加載一個全新的功能和運行。

而且window.location.href =網址是將瀏覽器重定向爲zzzzBov說

0

我覺得window.location.href = url是足夠的一個有效途徑。

相關問題