2011-08-02 59 views
4

我的ASP.NET網頁上有以下腳本,用於在用戶從未保存的更改導航離開頁面時發出警告。onbeforeunload消息出現兩次(Internet Explorer)

$(document).ready(function() { 
    $('input:not(:button,:submit),textarea,select').change(function() { 
     window.onbeforeunload = function() { 
      return 'Changes made to this page have not been saved!'; 
     } 
    }); 
}); 

這個作品一樣打算除了一些問題,當用戶使用Internet Explorer並嘗試導航離開使用像這樣的一個環節。

<div onclick="window.location=&#39;http://www.domain.com&#39;;">Text</div> 

如果用戶選擇「保留在此頁面上」,則消息框出現兩次。然後,如果他們選擇「留在這個頁面上的」第二次,調試器突出了以上鍊接與消息:

Microsoft JScript runtime error: Unspecified error.

這個問題似乎是具體到Internet Explorer。在網絡搜索中,我能夠找到許多關於相關錯誤的參考資料,令人難以置信地返回幾個版本的Internet Explorer。但是,我無法從Microsoft或任何合理的解決方法中找到任何評論。以下是我發現的幾個相關鏈接。

  1. http://forums.asp.net/t/1199756.aspx/1
  2. Why is my onbeforeunload handler causing an "Unspecified error" error?
  3. http://www.telerik.com/community/forums/aspnet-ajax/tabstrip/cancel-on-onbeforeunload-in-ie-6-7-create-js-unspecified-error.aspx
  4. http://scottonwriting.net/sowblog/archive/2005/04/19/163068.aspx
  5. http://www.techtalkz.com/internet-explorer/116662-onbeforeunload-dialog-cancel-button-when-window-location-href-bug.html
  6. http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14213927
  7. http://www.webmasterkb.com/Uwe/Forum.aspx/jscript/4321/IE7-and-onbeforeunload
  8. http://www.bigresource.com/ASP-Javascript-Unspecified-Error-BHoy7ptS.html
  9. http://www.4guysfromrolla.com/articles/042005-1.aspx

任何人都可以提出一個解決辦法?看起來Connect不接受IE錯誤報告。我正在使用IE9

回答

8

我們在IE11中遇到了同樣的問題。

事實證明,在IE中分配window.location = "http://www.domain.com"會導致這個問題。

如果您改爲使用location.href = "http://www.domain.com",它只會提示用戶一次。

希望這可以幫助別人!

+0

上帝派,永遠不會想出來...... –

+0

我在IE瀏覽器中的unbeforeload問題越來越沮喪,但這種解決方案像一個冠軍!謝謝!! –

2

URL不是onclick屬性的有效值。 onclick指定要運行的JavaScript;如果你想在一個div的點擊某處導航,你有兩個主要選擇:

  1. 包裹格在<a href="yoururl">
  2. 寫JS做同樣的事情,是這樣的:

前一種方法更好。

+0

哎呀!我真誠的道歉。儘管我盡了最大的努力,但這是一個錯字。現在糾正了。 –

1

不幸的是,雖然這個問題似乎在以前的Internet Explorer版本中首次出現,但這仍然是IE9中的一個錯誤。

我嘗試在Microsoft Connect上提交問題,但無法執行。

無論如何,這個問題與通過JavaScript退出頁面有關。通過將我的<div>包裝在錨標籤<a href="..."><div></div></a>中解決了該問題。使用常規鏈接,問題現在已經解決。