J'ai une fenêtre qui doit s'étendre sur plusieurs cadres, donc j'utilise window.createPopup pour que cela fonctionne. (IE6, 7 et 8.)Fenêtre contextuelle DOM vide
est la fonction ci-dessous j'utilise pour créer le menu contextuel:
function ShowMyPopup() {
notificationPopup = window.createPopup();
$(notificationPopup.document.body).load("/notification.html");
notificationPopup.show($(sourceFrame.document.body).width() - 510, $(sourceFrame.document.body).height() - (510 - $(sourceFrame.document.body).height()), 500, 500, sourceFrame.document.body);
}
Cela semble fonctionner assez bien. Je vois la fenêtre popup comme je devrais. Le problème est, peu importe ce que je fais, je ne peux pas sembler accéder à l'un des éléments DOM dans la fenêtre contextuelle qui en résulte. J'ai essayé diverses méthodes de jQuery aussi bien qu'un getElementById direct, et tout renvoient NULL. Ci-dessous le contenu de notification.html:
<html>
<head>
<script type="text/javascript">
$(document).ready(function() {
alert($(document).html());
alert($("#divNotification").html());
alert(document.getElementById("divNotification"));
});
</script>
</head>
<body>
<div id="divNotification" onclick="$(this).toggle();">
<h3>Some Notification!</h3>
Testing 1234...
</div>
</body>
</html>
Je vois trois alertes, donc je sais que jQuery fonctionne, mais les trois alertes simplement montrer « NULL ». Si je clique sur la div résultante, onClick se déclenche mais j'obtiens une erreur "Object Expected".
Que se passe-t-il ici?
Dans votre démonstration, jQuery n'est pas inclus. –
Vous essayez d'obtenir le code HTML du document en utilisant '$ (document) .html()'.Vous devriez utiliser '("html"). Html()'. Cela provoque la première alerte à renvoyer null. Les deux autres peuvent être causés par le DOM n'étant pas prêt au moment où vous essayez d'y accéder. Essayez d'ajouter un délai pour les retarder. –
Rob - jQuery est inclus dans la page parente, qui apparents lui permet de travailler dans la popup. (Ou peut-être pas?) En tout cas, cela ne fait aucune différence si j'ajoute aussi une balise script à ref jQuery dans notification.html – RMD