IE10で、JavaScriptのポストバック[リンクボタンなど]を必要とするASP.NETコントロールの問題に直面しています。
IE9バージョンおよびIE10互換モードで正常に動作しています。ただし、IE10標準モードでは、以下のエラーが発生します。 SCRIPT5009: '__doPostBack'は未定義です
[別のページにリダイレクトする単純なasp:linkボタンを持つデモプロジェクトを作成しました。]
誰でもこの修正を提案できますか?
.NET 2.0および.NET 4に同梱されているブラウザー定義ファイルには明らかにバグがあります。定義ファイルはブラウザーバージョンとしてIE10に対応していないため、JavaScriptをサポートしないデフォルト定義にデフォルト設定されます。
Scott Hanselmanのこの問題に関する非常に詳細な記事がここにあります。 http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
Scottは2つのソリューションを提案しますが、最初のソリューションが推奨されます。
1。マシン全体の修正サーバーに修正プログラムをダウンロードしてインストールします。
2。サイトのみの修正App_BrowsersUpdate
NuIEからWebサイトにパッケージして、新しいIEおよびFirefoxブラウザ定義をインポートします。
修正を試みても、IE11でエラーが引き続き表示される場合は、.netフレームワークを4.5に更新してください。
IE 10には問題があります:
_doPostBackのリンクを認識できません[基本的にASP Link Button]のHTML出力に表示されます)
修正については、次のリンクを参照してください。
基本的に何が起こっているのかというと、2つのhtml隠し要素「eventtarget」と「eventargument」が欠落しており、関数「__doPostBack」も欠落しています。
これらはDOMにありません。
このためにリストされたすべての修正を試しましたが、どれも機能しませんでした。ただし、jqueryとjavascriptの組み合わせを使用すると、控えめなソリューションがあります。これをドキュメントのjavascriptに追加すると、すぐにレースに参加できます(4.5をインストールできる場合は、サーバーに.net framework 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システムを使用して企業向けのサイトで作業している場合は、プラットフォームの更新によって作成された新しいバグを導入するのではなく、これは簡単なソリューションかもしれません。