Mozilla получает странное значение в JavaScript-функции WebForm_DoPostBackWithOptions - PullRequest
2 голосов
/ 14 июля 2011
  1. Откуда берется переменная options.eventTarget?
  2. Как я могу исправить эту функцию для Mozilla, если она генерируется кодом ASP.NET?
  3. Что это за функция JavaScriptиспользуется для?

Mozilla Firefox получает это значение для options.eventTarget в конце этой функции, когда вызывается тег привязки.Кнопка Сохранить (тег привязки) не работает в Mozilla, поэтому я пытаюсь выяснить, почему.

ExplorerPageHtmlLeft$ct...aveCancelDelete$LBuSave <===== problem

Internet Explorer получает это значение для options.eventTarget в конце этой функции, когдаякорный тег называется.Кнопка Сохранить (тег привязки) отлично работает в Internet Explorer.

ExplorerPageHtmlLeft$ctl02$ctl00$SaveCancelDelete$LBuSave

Ниже приведен код, который можно легко прочитать


Кнопка сохранения Mozilla Firefox (не работает):

<a
id="ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_LBuSave"
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ExplorerPageHtmlLeft$ctl02$ctl00$SaveCancelDelete$LBuSave", "", true, "", "", false, true))"
onclick="javascript:encryptField(document.getElementById('ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_TxtPassword'),document.getElementById('IHHidden'));"
>
<img border="0" alt="Save" src="/images/save.gif">
</a>

Кнопка сохранения в Internet Explorer (работает нормально):

<a
onclick="javascript:encryptField(document.getElementById('ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_TxtPassword'),document.getElementById('IHHidden'));"
id="ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_LBuSave"
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ExplorerPageHtmlLeft$ctl02$ctl00$SaveCancelDelete$LBuSave&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))"
>
<img src="/images/save.gif" border="0" alt="Save">
</a>

Вот функция JavaScript:

function WebForm_DoPostBackWithOptions(options) {
    var validationResult = true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) == 'function') {
            validationResult = Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
            theForm.action = options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus = theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) {
                if (typeof(document.activeElement) == "undefined") {
                    lastFocus.value = options.eventTarget;
                }
                else {
                    var active = document.activeElement;
                    if ((typeof(active) != "undefined") && (active != null)) {
                        if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
                            lastFocus.value = active.id;
                        }
                        else if (typeof(active.name) != "undefined") {
                            lastFocus.value = active.name;
                        }
                    }
                }
            }
        }
    }
    if (options.clientSubmit) {
        __doPostBack(**options.eventTarget**, options.eventArgument);
    }
}

1 Ответ

1 голос
/ 16 июля 2011

Ну, похоже, что значение options.eventTarget совсем не проблема.Было странно, что это было ровно 50 символов.

options.eventTarget в Firebug: "ExplorerPageHtmlLeft $ ct ... aveCancelDelete $ LBuSave"

Оказывается, что Mozilla Firefox Firebug показывает только 50 символов ... он занимает первую и последнюю частьидентификатор клиента управления (и 3 точки в середине) и вставляет его в поле значения в переменной наблюдения Firebug.Для подтверждения я просто поместил «alert (options.eventTarget)» в переменную watch, и она показала все значение.Так что это определенно не так!

Я до сих пор не знаю, почему мой LinkButton не вызывает мой обработчик событий в моем коде в Mozilla, а в Internet Explorer.Думаю, когда у меня будет больше информации, я опубликую ее (вероятно, по другому вопросу).Это может быть связано с включением проверки при нажатии на кнопку ссылки.Это то, что заставляет ASP.NET автоматически помещать эту функцию в код клиента.

...