8

Chcę użyć wtyczki jGrowl dla jQuery (http://stanlemon.net/projects/jgrowl.html#samples), aby wyświetlić niektóre wiadomości na stronie. Aby to zrobić, należy wywołać metodę ScriptManager.RegisterClientScriptBlock takiego:Problem z ScriptManager.RegisterClientScriptBlock i jQuery w programie Internet Explorer 8

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

kod działa idealnie w Firefox/Chrome/Safari. Jednak w przeglądarce Internet Explorer nie widzę powiadomienia i nie dostaję żadnego błędu Javascript.

Pracuję pod Windows 7 i mam Internet Explorer 8 Beta (wersja 8.0.7000.0) i mam ten sam "błąd" w trybie zgodności.

Jak mogę rozwiązać ten problem?

Odpowiedz

12

Ten problem występuje, ponieważ IE8 oczekuje, że wszystkie elementy DOM zostaną załadowane przed wprowadzeniem modyfikacji do DOM. Udało mi się zduplikować problem opisany przez jGrowl.

Aby to naprawić, zmodyfikowałem skrypt tak, aby wywołanie jGrowl miało miejsce, gdy dokument jest gotowy. Oto zaktualizowany kod:

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

Dzięki za odpowiedź. Próbowałem naprawić, ale nadal nie działa. Może być tak dlatego, że mam panel aktualizacji na stronie? –

+0

Zrobiłem test tego kodu z panelem aktualizacji i działało dobrze. Czy faktycznie skopiowałeś/wkręciłeś powyższy kod? Czy w przeglądarce pojawiają się błędy javascript? –

+0

Jeśli po wykonaniu tej czynności nadal występuje problem, konieczne może być uaktualnienie do wersji ostatecznej wersji IE8 zamiast wersji Beta. –

2

dodać <form runat="server" id="form1"> do strony. To zadziała ...

0

Jeśli nie jest źle, myślę, że trzeba to dodać na bocznej stronie klienta.

<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> 

Aby uzyskać więcej informacji, zobacz this.

Powiązane problemy