2010-12-10 79 views

Répondre

3

Vous êtes en mesure de vérifier l'événement de chargement iframe

onLoad="alert(this.contentWindow.location);" 

ou sur jquery:

$('iframe#yourId').load(function() { 
    alert("the iframe has been loaded"); 
}); 
+11

chargement d'un iframe n'a rien à détecter un clic sur un lien dans l'iframe – epascarello

+1

pourquoi? Lorsque vous avez cliqué sur le lien, l'emplacement de iframe sera modifié, donc iframe load event doit être déclenché. – Anton

+3

En fait, cela a fonctionné pour moi, parce que je n'ai pas besoin de détecter chaque clic à l'intérieur du cadre, mais cliquez sur le lien qui est égal au changement d'emplacement iframe. EDIT: Je ne peux qu'accepter cette réponse, je ne peux pas voter pour une raison quelconque (je n'ai pas voté contre). – Paul

8

En supposant que vous ayez un iframe avec l'ID "myIframe", et que l'iframe provienne du même domaine que le document principal, les éléments suivants détecteront un clic n'importe où dans le document. Cela fonctionne également lorsque le document est modifiable, qui utilise onclick du document propriété ne serait pas:

function iframeClickHandler() { 
    alert("Iframe clicked"); 
} 

var iframe = document.getElementById("myIframe"); 
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document; 

if (typeof iframeDoc.addEventListener != "undefined") { 
    iframeDoc.addEventListener("click", iframeClickHandler, false); 
} else if (typeof iframeDoc.attachEvent != "undefined") { 
    iframeDoc.attachEvent ("onclick", iframeClickHandler); 
} 
+0

cela suppose que l'iframe n'est pas un domaine croisé je pense. – erikvold

+0

@erikvold: Correct. J'ai ajouté une note à ma réponse. –