Добавление обработчика события click в iframe
Я хочу обработать событие click
на iframe
с помощью обработчика, который получает параметр id iframe
.
Я могу добавить обработчик события onClick
через JavaScript следующим образом, и он отлично работает:
iframe.document.addEventListener('click', clic, false);
Но в этом случае Im не смог передать параметр 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>
Ответы
Ответ 1
Вы можете использовать закрытие для передачи параметров:
iframe.document.addEventListener('click', function(event) {clic(this.id);}, false);
Однако я рекомендую вам использовать лучший подход для доступа к вашему фрейму (я могу только предположить, что вы используете способ DOM0 для доступа к окнам фреймов по их имени - то, что поддерживается только для обратной совместимости):
document.getElementById("myFrame").contentDocument.addEventListener(...);
Ответ 2
iframe не имеет события onclick, но мы можем реализовать это, используя iframe onload event и 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>
Надеюсь, это поможет вам....