2010-02-18 4 views
1

J'ai travaillé sur une fenêtre contextuelle qui interagit avec le window.opener. J'ai trouvé un problème spécifique avec IE ne travaillant pas en essayant d'ajouter un objet. J'ai mis en place un demo page here.Besoin d'aide pour traquer un bug jQuery

Fondamentalement, ce que fait la démo ouvre une fenêtre contextuelle avec un bouton. Il est destiné à mettre en évidence des parties de la page comme je l'ai décrit dans mon previous question.

Dans la démo, un clic sur le bouton de la fenêtre contextuelle ajoute deux divs au window.opener. Un div est ajouté en tant que chaîne et le second est ajouté en tant qu'objet. J'obtiens une erreur dans IE en essayant d'ajouter un objet. Voici le javascript:

$(':button').click(function(){ 
$('#clicked').empty().show().html('Click detected!').fadeOut(); 
var str = '<div class="highlight" style="position:absolute;height:50px;width:50px;left:150px;top:100px;background:#fc0;zIndex:99;">str</div>'; 
var obj = $('<div/>', { 
    'class': 'highlight', 
    css: { 
    position: 'absolute', 
    height:  '50px', 
    width:  '50px', 
    left:  '100px', 
    top:  '100px', 
    background: '#08f', 
    zIndex:  99 
    } 
}).html('obj'); 
try { $(window.opener.document.body).append(obj); } catch(err) { alert(err.description) }; 
$(window.opener.document.body).append(str); 
}) 

Alors, je demande de l'aide à traquer le problème avec jQuery.

+0

Avez-vous jeté un oeil à l'interface utilisateur jQuery? ils ont un composant de dialogue qui peut aider: http://jqueryui.com/demos/dialog/ –

+0

Salut Luke et merci pour le commentaire, mais je veux ajouter un div à l'ouvre-fenêtre pour mettre en évidence une section de la page. Il doit être positionné et semi-transparent, donc une boîte de dialogue n'est pas ce que je veux. – Mottie

Répondre

3

Je ne pense pas que IE vous permettra d'ajouter un élément créé dans une fenêtre dans le DOM d'une autre fenêtre. C'est vraiment difficile à ce sujet. De même, il est parfois flippé si vous passez des objets Javascript construits d'une fenêtre à une autre, surtout si la fenêtre de création disparaît plus tard. Essayez d'utiliser window.opener.$("<div/>") pour créer votre élément.

+0

C'est une solution très belle et élégante. Donc je suppose que je devrais demander si j'ai besoin de continuer à poursuivre le problème avec jQuery? – Mottie

+0

Ce n'est pas vraiment un problème avec jQuery - il n'y a vraiment rien de sain que la bibliothèque puisse faire pour vous, car lorsque vous créez un élément, vous n'avez aucune idée que vous allez essayer de le coller dans le DOM d'une autre fenêtre. – Pointy

+0

ok alors, merci pour votre aide :) – Mottie