web-dev-qa-db-fra.com

Ajout d'un gestionnaire d'événements Click à iframe

Je veux gérer l’événement click sur un iframe avec un gestionnaire qui obtient l’identifiant de iframe comme paramètre.

Je peux ajouter un gestionnaire d'événements onClick via JavaScript comme suit et cela fonctionne très bien:

iframe.document.addEventListener('click', clic, false);

Mais dans ce cas, je ne parviens pas à transmettre un paramètre à clic(). J'ai essayé d'imprimer this.id Dans clic() mais aucun résultat.

onClick L'attribut HTML ne fonctionne pas du tout, le gestionnaire n'est pas appelé.

<html>
<head>
<script type="text/javascript">
function def() {
    myFrame.document.designMode = 'on';
}
function clic(id) {
    alert(id);
}
</script>
</head>
<body onLoad="def()">
<iframe id="myFrame" border="0" onClick="clic(this.id)"></iframe>
</body></html>
23
samach

Vous pouvez utiliser des fermetures pour transmettre des paramètres:

iframe.document.addEventListener('click', function(event) {clic(this.id);}, false);

Cependant, je vous recommande d'utiliser une meilleure approche pour accéder à votre cadre (je ne peux que supposer que vous utilisez la façon DOM0 d'accéder aux fenêtres de cadre par leur nom - quelque chose qui n'est conservé que pour la compatibilité descendante):

document.getElementById("myFrame").contentDocument.addEventListener(...);
15
Wladimir Palant

iframe n'a pas d'événement onclick mais nous pouvons l'implémenter en utilisant l'événement onload d'iframe et le javascript comme celui-ci ...

function iframeclick() {
document.getElementById("theiframe").contentWindow.document.body.onclick = function() {
        document.getElementById("theiframe").contentWindow.location.reload();
    }
}


<iframe id="theiframe" src="youriframe.html" style="width: 100px; height: 100px;" onload="iframeclick()"></iframe>

J'espère que cela vous sera utile ....

24
Gaurav Agrawal