Problème avec ScriptManager.RegisterClientScriptBlock et jQuery dans Internet Explorer 8
-
20-08-2019 - |
Question
Je souhaite utiliser le plug-in jGrowl pour jQuery ( http://stanlemon.net/projects/jgrowl .html # samples ) pour afficher des messages sur une page. Pour ce faire, j'appelle la méthode ScriptManager.RegisterClientScriptBlock comme suit:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(),
"$.jGrowl('" + message + "');", true);
Le code fonctionne parfaitement dans Firefox / Chrome / Safari. Cependant, dans Internet Explorer, je ne vois pas la notification et je n’obtiens aucune erreur Javascript.
Je travaille sous Windows 7 et j'ai Internet Explorer 8 Bêta (version 8.0.7000.0) et le même " bug " sous Mode de compatibilité.
Comment puis-je résoudre ce problème?
La solution
Ce problème se produit car IE8 s'attend à ce que tous les éléments du DOM soient chargés avant que des modifications ne puissent être apportées au DOM. J'ai pu reproduire le problème que vous avez décrit avec jGrowl.
Pour résoudre ce problème, je viens de modifier votre script afin que l'appel à jGrowl ait lieu une fois le document prêt. Voici le code mis à jour:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
Guid.NewGuid().ToString(),
"$(function(){$.jGrowl('" + message + "');});", true);
Autres conseils
ajouter <form runat="server" id="form1">
à la page. Cela fonctionnera ...
Si ce n'est pas faux, je pense que vous devez l'ajouter dans la page côté client.
<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>
Pour plus de détails, consultez cette .