Добавление обработчика событий клика в iframe - PullRequest
23 голосов
/ 23 июня 2011

Я хочу обработать событие click на iframe с помощью обработчика, который получает идентификатор iframe в качестве параметра.

Я могу добавить обработчик событий onClick через JavaScript следующим образом, и он отлично работает:

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

Но в этом случае я не могу передать параметр в clic(). Я пытался напечатать this.id в clic(), но безрезультатно.

onClick Атрибут HTML вообще не работает, обработчик не вызывается.

<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>

Ответы [ 2 ]

24 голосов
/ 23 июня 2011

iframe не имеет события onclick, но мы можем реализовать это с помощью события onraph iframe и javascript следующим образом ...

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>

Надеюсь, это поможет вам ...

15 голосов
/ 23 июня 2011

Вы можете использовать замыкания для передачи параметров:

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

Тем не менее, я рекомендую вам использовать лучший подход для доступа к вашему фрейму (я могу только предположить, что вы используете способ DOM0 для доступа к фрейм-окнам по их имени - то, что сохраняется только для обратной совместимости):

document.getElementById("myFrame").contentDocument.addEventListener(...);
...