В моем приложении ASP.NET регистрация скрипта из кода до загрузки страницы приводит к ошибке «операция прервана» в IE - PullRequest
0 голосов
/ 15 июня 2009

Я понимаю, что в IE 5.5, 6 и 7, когда вы изменяете элемент DOM до его «закрытия», он выдает ошибку «операция прервана» (эта статья содержит больше информации: http://www.clientcide.com/code-snippets/manipulating-the-dom/ie-and-operation-aborted/)

В моем приложении ASP.Net я регистрирую блок клиентского скрипта на странице во время события page_load. (Я попытался переместить этот код в событие page_loadcomplete или page_prerender безуспешно).

Вот мой код (довольно простой):

// Checks if the handler is a Page and that the script isn't already on the Page
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("blockUIAlert"))
{
    ScriptManager.RegisterClientScriptBlock(page, typeof(ScriptUtilities),
        "blockUIAlert", script, true);
}

Я использую этот код из других постбэков AJAX на моей странице без проблем. Эта ошибка возникает, только если этот код вызывается при загрузке страницы.

Что я могу сделать, чтобы этот код вызывался после закрытия элементов DOM? Я не хочу, чтобы пользователю приходилось инициировать это действие вручную - я хочу, чтобы этот код выполнялся, как только страница загружена, при условии соблюдения определенных условий на стороне сервера.

Ответы [ 4 ]

1 голос
/ 16 июня 2009

Может быть, это ответ, который вы ищете.

У меня была ошибка прерванной операции, и, как и вы, я также знал, почему это происходит, но я был на 100% уверен, что не изменял элемент DOM до того, как он был «закрыт». Оказывается, ошибка была в клиентской среде ASP.NET AJAX. Мне пришлось изменить клиентскую структуру. См. Вопрос, который я разместил: Операция Internet Explorer прервана и проблема с задержкой

Я также только что заметил, что вы используете RegisterClientScriptBlock. Попробуйте ScriptManager.RegisterStartupScript (...).

1 голос
/ 15 июня 2009

Если вы используете YUI или jQuery, у них есть функции прослушивания событий js, которые будут запускать код после завершения загрузки DOM. Держу пари, что библиотека MS Ajax имеет аналогичную функцию.

jQuery Примеры

0 голосов
/ 15 июня 2009

К какому событию вы прикрепляете скрипт на стороне сервера, не имеет значения. Ваша проблема чисто клиентская, и вы не предоставили никакого сценария. Однако я полагаю, что вызов функции для события onload может сработать. Например <body onload='yourFunction()'>

0 голосов
/ 15 июня 2009

Я использую событие page_load для этой же цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...