31

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

IE9 バージョンと IE10 互換モードで正しく動作しています。しかし、IE10標準モードでは、以下のエラーが発生しています。SCRIPT5009: '__doPostBack' は定義されていません

[別のページにリダイレクトする単純な asp:link ボタンを備えたデモ プロジェクトを作成しました。] IE10_エラー画面

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

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

4

4 に答える 4

50

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

Scott Hanselman は、この問題について非常に詳細に説明しています: http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

Scott は 2 つの解決策を提案しており、最初のものが推奨されています。

1. マシン全体の修正 ホットフィックス をダウンロードしてサーバーにインストールします。

2. サイトのみの修正NuGet からパッケージを Web サイトに インストールして、App_BrowsersUpdate新しい ie および firefox ブラウザー定義をインポートします。

于 2013-03-14T21:42:43.150 に答える
1

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

于 2014-01-24T21:43:00.287 に答える
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 システムを使用して企業の公開サイトで作業している場合、プラットフォームの更新によって作成された新しいバグが発生する可能性があるのとは対照的に、これはより簡単な解決策になる可能性があります。

于 2014-02-07T09:24:31.560 に答える