web-dev-qa-db-ja.com

__doPostBackはIE11では未定義です

既製のASP HyperLinkコントロールを使用すると、IE 11でエラーSCRIPT5009が発生します:__doPostBackはここへのリンクで未定義です: http://msdn.Microsoft.com/ en-us/library/ie/xyf5fs0y(v = vs.94).aspx

これは、F12 devtoolsコンソールウィンドウに表示されます。

誰かがこれに遭遇しましたが、修正はありますか?これは本番環境です。

[〜#〜] edit [〜#〜]:ホットフィックスを適用しています http://support.Microsoft.com/kb/2600088 は私にとっては機能しませんでした、そしてIE 10はWindows 8ではうまく機能します。

Scott Hanselmanによる最新情報の最新記事があります。 http://www.hanselman.com/blog/IE10AndIE11AndWindows81AndDoPostBack.aspx これらの修正を試みてこの質問を更新しますが、これはWindows 8.1およびIE11に隔離されているようです。

13
plntxt

Webサーバーに.NET Framework 4.5をインストールすると解決します。

http://www.Microsoft.com/en-gb/download/details.aspx?id=3065

または、.NET Framework 4.5をインストールできない場合は、IE11用のMicrosoftホットフィックスがあります。 http://support.Microsoft.com/kb/2836939 (コメントをありがとう@Afract)

3
Chris

数日間同じ問題に取り組んだ後、私たちはこの解決策を見つけました:

http://connect.Microsoft.com/VisualStudio/feedback/details/806542/fix-internet-Explorer-11-not-detected-correctly-by-net-4-0-framework-when-custom- browser-files-are-used

新しい.browserファイルをApp_Browsersフォルダーに追加します。ファイルに「IE11.browser」という名前を付け、App_Browsersフォルダーが存在しない場合は作成します。

次に、上のリンクから本文を新しく作成したファイルにコピーして再デプロイするだけで、_doPostBackエラーは発生しなくなります。

ファイルの本文は次のようになります。

<browsers>
<browser id="IE11" parentID="Mozilla">
  <identification>
    <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
    <userAgent nonMatch="IEMobile" />
  </identification>
  <capture>
    <userAgent match="Trident/(?'layoutVersion'\d+)" />
  </capture>
  <capabilities>
    <capability name="browser"             value="IE" />
    <capability name="layoutEngine"         value="Trident" />
    <capability name="layoutEngineVersion" value="${layoutVersion}" />
    <capability name="extra"                value="${extra}" />
    <capability name="isColor"             value="true" />
    <capability name="letters"             value="${letters}" />
    <capability name="majorversion"         value="${major}" />
    <capability name="minorversion"         value="${minor}" />
    <capability name="screenBitDepth"     value="8" />
    <capability name="type"                 value="IE${major}" />
    <capability name="version"             value="${version}" />
  </capabilities>
</browser>

<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
<browser id="IE110" parentID="IE11">
  <identification>
    <capability name="majorversion" match="11" />
  </identification>

  <capabilities>
    <capability name="ecmascriptversion"    value="3.0" />
    <capability name="jscriptversion"     value="5.6" />
    <capability name="javascript"         value="true" />
    <capability name="javascriptversion"    value="1.5" />
    <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
    <capability name="w3cdomversion"        value="1.0" />
    <capability name="ExchangeOmaSupported" value="true" />
    <capability name="activexcontrols"     value="true" />
    <capability name="backgroundsounds"     value="true" />
    <capability name="cookies"             value="true" />
    <capability name="frames"             value="true" />
    <capability name="javaapplets"         value="true" />
    <capability name="supportsCallback"     value="true" />
    <capability name="supportsFileUpload" value="true" />
    <capability name="supportsMultilineTextBoxDisplay" value="true" />
    <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
    <capability name="supportsVCard"        value="true" />
    <capability name="supportsXmlHttp"     value="true" />
    <capability name="tables"             value="true" />
    <capability name="supportsAccessKeyAttribute"    value="true" />
    <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
    <capability name="vbscript"             value="true" />
  </capabilities>
</browser>
</browsers>

.Netのバージョンを4から4.5にアップグレードする必要はなく、すべてが正常に機能しています。

うまくいけば、これは同じイライラする問題を抱えている誰かを助けるでしょう!

25
Robby Cowell

マスターページに以下のスクリプトを配置すると、確実に修正されます。同様の問題があり、修正されました。

<script runat="server">

protected override void OnInit(EventArgs e)
{
Page.ClientTarget = "uplevel";
base.OnInit(e);

}
</script> 
7
vishal

私たちのサーバーにFramework 4.5をインストールするには、赤いテープの沼を通り抜けてフォームに記入する必要があるので、ここで私がやったことです:

後藤サイト: http://blogs.telerik.com/aspnet-ajax/posts/13-12-19/how-to-get-your-asp.net-application-working-in-ie11 =

IE11フィックスを含むカスタム.browserファイルをダウンロードするためのリンクを見つけます。

Telerik_ie11_browser_file_fix.Zipをコンピューターに保存し、Telerik_IE11_fix.browserを解凍します。

Telerik_IE11_fix.browserをC:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsersのターゲットサーバーパスにコピーします。

サーバーで次のコマンドを実行します(hanselman修正ブログで確認)cd C:\ Windows\Microsoft.NET\Framework64\v4.0.30319(または使用しているフレームワークのバージョン)

C:\ Windows\Microsoft.NET\Framework64\v4.0.30319> aspnet_regbrowsers –iを実行します。

サーバーでiisresetを実行する

1
user3201809

修正プログラムはどれも機能しませんでした。更新もie.browserファイル。 Windows Server 2008 R2を使用しています。

(.net 4.5へのアップグレードは別として)機能した唯一の解決策は、このスレッドに @ vishalによって提案されたスクリプト を追加することです。

0
Valer

IIS 7.5はIE= 11.で動作します。11を使用してWindows 2008のApp_Browsers(XMLについては上記を参照)にブラウザ構成ファイルを追加します。それ以外の場合、これははるかに簡単です。

0
Dave Ranck

ユーザーエージェントが変更されたため、IE11がAsp.netによって最新のブラウザーとして認識されないのは何が起こるかです。同じ状況の誰にとっても、100件の提案からの唯一の解決策は、setTimeoutを追加することでした。

以下のスニペットを使用する代わりに

__doPostBack('ButtonPostBack', "");   

これを使う

setTimeout(function () { __doPostBack('ButtonPostBack', ""); }, 1);
0
Manoj Patil

Runnat = 'server'のフォームタグがないページを発見しました。これがページにない場合、ポストバックはコントロールをパスバックできず、背後にあるコードを適切に起動できません

0
Brandon

基本的に何が起こっているかというと、2つの欠落したHTML非表示要素「eventtarget」と「eventargument」、および欠落した関数「__doPostBack」があります。

これらはDOMから欠落しています。

私はこれにリストされているすべての修正を試みましたが、どれもうまくいきませんでした。ただし、jqueryとjavascriptの組み合わせを使用すると、控えめな解決策があります。これをドキュメントのjavascriptに追加して準備ができたら、レースに出かけます。

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) { object
    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