2011-04-28 157 views
0

我有一個問題,偶爾用戶打開頁面時,它會看起來閃爍並調整自身大小。看看這個日誌似乎是提交多次被調用,但我不能100%確定,因爲我無法在我自己的環境中重現這一點。在window.onload中提交無限循環

在下面的代碼中有什麼似乎對你沒有用,或者我可以檢查什麼來查明問題。

編輯:看起來,.net頁面一直服務於頁面,後續的submit()函數正在onload事件上調用,但它永遠不會讓它回到服務器。我們在一臺機器上發現了這個錯誤,但沒有發現另一臺相同的機器。我想知道它是否會成爲負載均衡問題。

編輯:我們終於能夠重現這個錯誤。它涉及到通過負載平衡器,但仍然不知道問題是什麼。這個問題也似乎只是偶爾出現,如果確實發生,如果關閉IE並重新打開它,它有可能修復它自己。

window.onload = function() { 
     if (document.getElementById("hfPostBack").value != "true") { 
      if (confirm('hfPostBackは:' + document.getElementById("hfPostBack").value + 'です.続行します')) { 
       document.getElementById("hfPostBack").value = "true"; 
       document.forms[0].submit(); 
      } 
     } else { 
      alert('hfPostBackは:' + document.getElementById("hfPostBack").value + 'です'); 
     } 
    } 

回答

0

事實證明,通過將Web應用程序的IIS安全設置從匿名登錄更改爲Windows身份驗證解決了此問題。

仍然不知道爲什麼會發生這種情況,但它似乎與負載均衡器傳遞身份驗證信息/模擬有關。

2
document.forms[0].submit(); 

如果代碼提交表單具有相同頁面的操作形式是,那麼這將導致無限循環。 (Load-Submit-Load-Submit ...)

+2

根據窗體和瀏覽器的不同,它可能只是將重載的頁面從緩存中取出並再次擊中'if'的第一個分支。 – 2011-04-28 03:33:22

+0

這是一個不錯的主意。雖然還在調查中。 – 2011-04-28 06:21:58