21

IEとChromeでうまく機能するページがありますが、FirefoxとOperaでは機能しません。私がそれが機能しないと言うとき、私はSubmitボタンがまったく何もしないことを意味します。これは、いくつかがネストされ、いくつかUpdatePanelsのjQueryUIアコーディオンも含まれているページです。

私は単純divです。

<div id="date-dialog" title="Date?">
    <label id="lblDate" for="txtDate">
        Please Enter Your The Date:
    </label>
    <input type="text" id="txtDate" class="text ui-widget-content ui-corner-all" />
</div>

そして、それをダイアログに変換するための簡単なコードがいくつかあります。

$('#date-dialog').dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    buttons: {
        "Submit": function () {
            __doPostBack('DateButton', $('#txtDate').val());
        },
        "Cancel": function () {
            $(this).dialog("close");
        }
    }
});

$('#txtDate').datepicker({ dateFormat: 'yy-mm-dd' });

私はこれを追加しようとしましたが、これは役に立たず、実際にはモーダルダイアログでは機能しません:

    open: function (type, data) {
        $(this).parent().appendTo("form");
    },

Firefoxでは、次のエラーが発生します。

Error: TypeError: access to strict mode caller function is censored
Source File: http://ajax.microsoft.com/ajax/4.0/2/MicrosoftAjaxWebForms.debug.js
Line: 718

これを修正するために何をすべきかわかりません。オフにしたいのですstrict modeが、その方法に関する情報が見つかりません。Googleを使用して、そのエラーに関する情報をほとんど見つけることができません。私がやっていることは非常に単純なはずだと思われます。

4

6 に答える 6

33

これは一種の古い投稿ですが、この問題は今日でも私に発生しました。ボタンのクリックを使いたくなかったので、代わりに試してみましたがsetTimeout、それも機能します。

この問題を抱えている人には、次の解決策を試してください。

setTimeout(function() { __doPostBack('DateButton', $('#txtDate').val()); }, 1);
于 2014-09-05T13:03:49.510 に答える
5

最近この問題に対処する必要があったので、アプリの上部に次のスクリプトを追加することで、問題を解決し、Edge、IE、Chrome、FireFoxで__doPostBackを機能させることができることがわかりました。

    if(navigator.userAgent.toLowerCase()。indexOf('firefox')> -1){window.event = {}; }    

SetTimeout関数を使用すると、 Edgeが壊れます。window.event = {}を入れるだけで、IEが壊れました。

于 2018-06-15T09:25:23.787 に答える
1

これは実際に問題を修正する方法を説明していませんが、これは回避策です。

ダイアログボックスの各フィールドに対応する非表示フィールドを作成しました。次に、ボタンを作成しました。ダイアログボックスに表示されるとフォームの外側に移動するdivため、これらはダイアログボックスの外側に保持する必要がありました。div次に、ダイアログボックスの作成コードを次のように変更しました。

$('#date-dialog').dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    buttons: {
        "Submit": function () {
            $('#<%=hfDate.ClientID %>').val($('#txtDate').val());
            $('#<%=btnFormSubmit.ClientID %>').click();
            $(this).dialog("close");
        },
        "Cancel": function () {
            $(this).dialog("close");
        }
    }
});
于 2013-01-29T01:24:46.400 に答える
1

これはIE、Chrome、Firefoxで機能します。ブラウザ!、https: //mnaoumov.wordpress.com/2016/02/12/wtf-microsoftajax-js-vs-use-strict-vs-firefox-vs-ie/に感謝します

function hackEventWithinDoPostBack() {
var originalEventDescriptor = Object.getOwnPropertyDescriptor(Window.prototype, "event");
    var hackEventVariable = false;
    var eventPropertyHolder;
    Object.defineProperty(window, "event", {
        configurable: true,
        get: function get() {
            var result = originalEventDescriptor ? originalEventDescriptor.get.apply(this, arguments) : eventPropertyHolder;
            if (result || !hackEventVariable)
                return result;
            return {};
        },
        set: function set(value) {
            if (originalEventDescriptor)
                originalEventDescriptor.set.apply(this, arguments);
            else
                eventPropertyHolder = value;
        }
    });
    var originalDoPostBack = window.__doPostBack;

    window.__doPostBack = function hackedDoPostBack() {
        hackEventVariable = true;
        originalDoPostBack.apply(this, arguments);
        hackEventVariable = false;
    };
}

hackEventWithinDoPostBack();
于 2018-04-16T09:30:24.007 に答える
0

これはFirefoxQuantumで私に起こりました。jQuery 3.x CDNを使用していたので、プロジェクトでローカルに参照するにはダウンロードする必要がありました。その後、私はそれを編集し(jquery.3.x.min.js)、以下をコメント/削除しました:

"use strict";

私はsearchそれらをすべて削除するためにやらなければなりませんでした。2つありました。

于 2018-10-16T19:52:40.127 に答える
0

これは良いニュースかもしれませんが、最新のFirefox84.0.2とjQuery3.5.1で問題を再現することはできません。報告されたシナリオに加えて、「厳密な使用」ルールに関連する他の__doPostBackの問題のあるシナリオをテストしましたが、それらはすべてJSエラーなしで機能しているようです。

最新のjQuery3.5.1と最新のFirefox84.0.2でこの問題が引き続き発生しますか?

jQueryチームからの公式声明もありますが、それは古く、jQuery 1.9.1に適用されますが、3.5.1には適用されません-https ://bugs.jquery.com/ticket/13335

ありがとうございました!

于 2021-01-14T17:15:58.613 に答える