web-dev-qa-db-ja.com

IE10 SCRIPT5009: '__doPostBack'は未定義です

IE10で、JavaScriptのポストバック[リンクボタンなど]を必要とするASP.NETコントロールの問題に直面しています。

IE9バージョンおよびIE10互換モードで正常に動作しています。ただし、IE10標準モードでは、以下のエラーが発生します。 SCRIPT5009: '__doPostBack'は未定義です

[別のページにリダイレクトする単純なasp:linkボタンを持つデモプロジェクトを作成しました。] IE10_error screen

解決策を試してみましたが、うまくいきませんでした

誰でもこの修正を提案できますか?

31
CHANDRAHAS

.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ブラウザ定義をインポートします。

50
Hady

修正を試みても、IE11でエラーが引き続き表示される場合は、.netフレームワークを4.5に更新してください。

1
bef

IE 10には問題があります:

_doPostBackのリンクを認識できません[基本的にASP Link Button]のHTML出力に表示されます)

修正については、次のリンクを参照してください。

http://ronniediaz.com/2013/02/07/ie10-imagebutton-_dopostback-undefined-bug-with-update-panel-script-manager/

0
Rohan

基本的に何が起こっているのかというと、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システムを使用して企業向けのサイトで作業している場合は、プラットフォームの更新によって作成された新しいバグを導入するのではなく、これは簡単なソリューションかもしれません。

0
user3283145