Проблема с ScriptManager.RegisterClientScriptBlock и jQuery в Internet Explorer 8

Я хочу использовать подключаемый модуль jGrowl для jQuery (http://stanlemon.net/projects/jgrowl.html#samples) для отображения некоторых сообщений на странице. Для этого я вызываю метод ScriptManager.RegisterClientScriptBlock следующим образом:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(),
   "$.jGrowl('" + message + "');", true);

Код отлично работает в Firefox/Chrome/Safari. Однако в Internet Explorer я не вижу уведомления и не получаю никаких ошибок Javascript.

Я работаю под Windows 7, и у меня есть Internet Explorer 8 Beta (версия 8.0.7000.0), и у меня такая же «ошибка» в режиме совместимости.

Как я могу решить эту проблему?


person Stefan Filip    schedule 09.05.2009    source источник


Ответы (3)


Эта проблема возникает из-за того, что IE8 ожидает, что все элементы DOM будут загружены до внесения изменений в DOM. Я смог воспроизвести описанную вами проблему с помощью jGrowl.

Чтобы исправить это, я просто изменил ваш скрипт, чтобы вызов jGrowl происходил после того, как документ будет готов. Вот обновленный код:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), 
     Guid.NewGuid().ToString(),
     "$(function(){$.jGrowl('" + message + "');});", true);
person Jose Basilio    schedule 10.05.2009
comment
Спасибо за Ваш ответ. Я пытался исправить, но это все еще не работает. Может быть из-за того, что у меня на странице есть панель обновлений? - person Stefan Filip; 10.05.2009
comment
Я проверил этот код с помощью панели обновлений, и он работал нормально. Вы действительно скопировали/вставили код выше? Вы получаете какие-либо ошибки javascript в браузере? - person Jose Basilio; 10.05.2009
comment
Если после этого у вас все еще есть проблема, вам может потребоваться выполнить обновление до финальной версии IE8 вместо бета-версии. - person Jose Basilio; 10.05.2009

добавить <form runat="server" id="form1"> на страницу. Это будет работать...

person Ugur CAN    schedule 04.01.2011

Если не ошибаюсь, я думаю, вам нужно добавить это на страницу на стороне клиента.

<script language="javascript" type="text/javascript" id="forModalPopUp">
    var prm =  Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);
    function InitializeRequest(sender, args) {
    }
    function EndRequest(sender, args) {
    }
</script>

Подробнее см. здесь.

person 456qwe123asd    schedule 31.05.2012