2010-08-25 8 views
0

J'ai une page avec deux boutons, un bouton ouvre une fenêtre pop-up avec la fonction suivante:bouton Détecter clic parent avec javascript

function MM_openBrWindow(theURL,winName,features) { //v2.0 
    my_window=window.open(theURL,winName,features); 
} 

et je dois détecter à partir de cette fenêtre (my_window) lorsque le second bouton dans la page parent est cliqué et déclencher une alerte.

Comment puis-je faire cela?

Merci d'avance.

Carlos

Répondre

0

Vous feriez my_window.alert("hey") en cas de clic pour le deuxième bouton dans la fenêtre parent. Si vous souhaitez accéder à la fenêtre parent à partir de la fenêtre enfant (pour ajouter un événement, par exemple), utilisez window.opener dans la fenêtre enfant.

button2.onclick = function (e) { 
    my_window.buttonTwoHasBeenClicked(); // this is defined in the child window.. once executed it means the button has been clicked. 
} 

Si vous souhaitez définir l'événement de au sein la fenêtre enfant:

// put this in your child window javascript source 
// also change "button2" to whatever your second button's ID is. 
window.opener.getElementById("button2").onclick = function() { 
    alert("button has been clicked on parent window"); 
} 
+0

Bonjour, merci, mais ce que je dois est que la fenêtre enfant détecte SI le bouton parent a été cliqué, l'alerte est juste pour voir si cela fonctionne. Merci – notforever

+0

@notforever: Oui, je sais. Vous auriez besoin d'un gestionnaire de clic, peu importe où il était défini. Dans cette poignée de clic, vous appelez une fonction dans votre référence 'my_window' pour laisser l'autre fenêtre" savoir "que le bouton a été cliqué. –

+0

Je suis désolé, je suis un débutant, pourriez-vous me donner un exemple s'il vous plaît, je ne sais pas comment référencer le bouton parent de ma fenêtre. Merci – notforever

0

Vous devez insérer le code dans la fenêtre enfant à l'aide window.opener, comme ceci:

function registerWithParent() { 
    window.opener.registerCallback(myCallback); 
} 

vous pouvez appeler que sur l'événement body onload.

<body onload="registerWithParent()"> 

Ensuite, vous avez le code JS dans la fenêtre parent comme ceci:

var theCallback; 
function registerCallback(fn) { 
    theCallback = fn; 
} 

ensuite votre code HTML sur le parent est comme:

Questions connexes