Problema com ScriptManager.RegisterClientScriptBlock e jQuery no Internet Explorer 8
-
20-08-2019 - |
Pergunta
Eu quero usar jGrowl plugin para jQuery ( http://stanlemon.net/projects/jgrowl .html # amostras ) para exibir algumas mensagens em uma página. Para fazer isso, eu chamo o método ScriptManager.RegisterClientScriptBlock assim:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(),
"$.jGrowl('" + message + "');", true);
O código funciona perfeito no Firefox / Chrome / Safari. No entanto, no Internet Explorer não vejo a notificação e eu não obter qualquer erro Javascript.
Eu trabalho no Windows 7 e eu tenho o Internet Explorer 8 Beta (versão 8.0.7000.0) e eu tenho o mesmo "bug" no modo de compatibilidade.
Como posso resolver este problema?
Solução
Esse problema ocorre porque IE8 espera que todos os elementos DOM para ser carregado antes de modificações no DOM podem ser feitas. Eu era capaz de duplicar o problema que você descreveu com jGrowl.
Para corrigi-lo, eu só modificou o seu script para que a chamada para jGrowl acontece uma vez que o documento está pronto. Aqui está o código atualizado:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
Guid.NewGuid().ToString(),
"$(function(){$.jGrowl('" + message + "');});", true);
Outras dicas
add <form runat="server" id="form1">
a página. Ele vai trabalhar ...
Se não é errado, eu acho que você tem que adicionar esta na página do lado do cliente.
<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>
Para obter mais detalhes, dê uma olhada este .