2013-03-07 113 views
31

我在使用需要JavaScript回發的ASP.NET控件的IE10上面臨問題[如鏈接按鈕]。IE10 SCRIPT5009:'__doPostBack'未定義

它適用於IE9版本以及IE10兼容模式。但在IE10標準模式下,它給出了以下錯誤。 SCRIPT5009:「__doPostBack」是不確定的

[我已經創建了一個簡單的ASP演示項目:鏈接按鈕重定向到另一頁] IE10_error screen

Tried the solution, but didn't work for me

任何人都可以提出此修訂?

+0

這些主題還值得一讀,尤其是「瀏覽器」服務器端文件修復! http://stackoverflow.com/questions/18485339/dopostback-failing-in-ie-11-windows-8-1和http://stackoverflow.com/questions/19915720/dopostback-is-undefined-in-ie11 – AFract 2015-03-17 10:56:54

回答

50

顯然,.NET 2.0和.NET 4附帶的瀏覽器定義文件中存在一個錯誤。定義文件不支持IE10作爲瀏覽器版本,因此默認爲不支持JavaScript的默認定義。

斯科特Hanselman有這個問題在這裏非常詳細的書面記錄:http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

斯科特提出了兩種解決方案,與第一個被推薦的一個:

1.整機全修復 下載和在服務器上安裝一個修復程序:

2.現場,唯一的解決方法 從的NuGet的App_BrowsersUpdate包安裝到您的網站導入新的IE和Firefox瀏覽器的定義。

+0

在哪裏安裝軟件包(僅限站點修復) - 在服務器端或編譯代碼的機器上? – 2013-11-08 09:08:45

+0

該修補程序需要安裝在爲該網站提供服務的Web服務器上 - 即以您的問題的術語,「服務器端」而不是「編譯代碼的機器」。後者只是你的開發環境。 – Hady 2013-11-10 08:13:16

+15

.NET無法識別IE10?一位失敗嘿.. – 2013-11-13 00:40:50

1

如果您已經嘗試了此修補程序,並且您仍然在IE11中看到錯誤,請將.net框架更新爲4.5。

0

基本上發生了什麼是有2個缺少HTML隱藏元素「eventtarget」 和「eventargument」,以及缺少的函數「__doPostBack」。

這些從DOM中丟失。

我嘗試了所有列出的修復和沒有工作。然而,使用jQuery和JavaScript的組合是一個不顯眼的解決方案。將此文件添加到您的文檔準備就緒的JavaScript上,您就可以參加比賽了(這比在服務器上安裝.net framework 4.5更爲快捷,但如果您可以安裝4.5版即可):

if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) { 
    $('#YOUR_ASPNET_FORMID').prepend('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />'); 
} 

if (typeof __doPostBack == 'undefined') { 
    __doPostBack = function (eventTarget, eventArgument) { 
    var theForm = document.forms['YOUR_ASPNET_FORMID']; 
    if (!theForm) { 
     theForm = document.YOUR_ASPNET_FORMID; 
    } 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
    }; 
} 

據我所知,有些說安裝4.5修復了這個。我肯定會推薦。但是,如果您像我一樣在面向企業的公共網站上開發一個以.net 4爲基礎的cms系統,這可能只是一個更簡單的解決方案,而不是可能引入更新平臺創建的新bug。

+0

我得到一個'對象'未定義的錯誤。這會導致什麼?我應該把它拿出來嗎? – ClosDesign 2014-07-25 18:23:00

+0

當我拿出來的時候,整個頁面都打破了。有什麼建議麼? – ClosDesign 2014-07-25 18:24:15