2013-03-07 47 views
31

IE10のASP.NETコントロールでJavaScriptのポストバックが必要な問題があります。[リンクボタンのように]IE10 SCRIPT5009: '__doPostBack'が定義されていません

IE9バージョンとIE10互換モードで正常に動作しています。しかし、IE10標準モードでは、以下のエラーが発生しています。 SCRIPT5009:「__doPostBackは」

未定義である[私は、単純なASPでのデモプロジェクト作成しました:。リンクボタン別のページにリダイレクトする] IE10_error screen

Tried the solution, but didn't work for me

誰もがこのための修正を提案することができます?

+0

これらの主題は、特に ".browser"サーバー側のファイル修正のための読み込みに値します! http://stackoverflow.com/questions/18485339/dopostback-failing-in-ie-11-windows-8-1 and http://stackoverflow.com/questions/19915720/dopostback-is-undefined-in-ie11 – AFract

答えて

50

.NET 2.0および.NET 4に同梱されているブラウザ定義ファイルには、明らかにバグがあります。定義ファイルはブラウザのバージョンとしてIE10に対応していないため、デフォルトの定義はJavaScriptをサポートしていません。

1.マシン全体で修正 ダウンロードして:http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

スコットは最初の推奨一つである1と、2つのソリューションを提案している:

スコットHanselman氏は、ここでは、この問題について非常に詳細な過去記事を持っていますサーバー上の修正プログラムをインストールします。

2.サイトのみの修正 新しいIEとFirefoxブラウザの定義をインポートするために、あなたのウェブサイトにNuGetからApp_BrowsersUpdateパッケージをインストールします。

+0

パッケージをインストールする場所(サイトのみの修正) - サーバー側またはコードがコンパイルされているマシン上で? –

+0

このホットフィックスは、ウェブサイトを提供するウェブサーバーにインストールする必要があります。つまり、質問の用語では「サーバー側」であり、コードがコンパイルされているマシンではありません。後者は単にあなたの開発環境です。 – Hady

+15

.NETはIE10を認識しませんか?ちょっと失敗のビット.. –

1

修正プログラムを試してもIE11でエラーが表示される場合は、.Netフレームワークを4.5に更新すると動作します。

0

本質的に何が起こっているのは、2つのHTML隠し要素 "eventtarget" と "eventargument"と欠落した関数 "__doPostBack"があるということです。

これらはDOMにはありません。

私はこのためにリストされたすべての修正を試してみましたが、どれもうまくいきませんでした。しかし、jqueryとjavascriptの組み合わせを使用すると、控えめな解決策があります。これをあなたのジャバスクリプトに準備してレースに参加してください(これは、あなたのサーバーに.netフレームワーク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のインストールの一部でこれを修正していることを理解します。私は間違いなくそれをお勧めします。しかし、ネット4で焼いたcmsシステムを使用して企業の公開サイトに取り掛かっているような場合は、プラットフォームを更新して作成された新しいバグを導入するのではなく、簡単な解決策になるかもしれません。

+0

「オブジェクト」の定義されていないエラーが発生しています。何が原因でしょうか?私はちょうどそれを取るべきですか? – ClosDesign

+0

私がそれを取り上げたときにも、ページ全体が壊れました。助言がありますか? – ClosDesign

関連する問題