web-dev-qa-db-ja.com

クリックイベントハンドラーをiframeに追加する

clickのIDをパラメーターとして取得するハンドラーを使用して、iframeiframeイベントを処理したい.

次のようにJavaScript経由でonClickイベントハンドラーを追加できますが、正常に機能します。

_iframe.document.addEventListener('click', clic, false);
_

しかし、この場合、clic()にパラメーターを渡すことができません。 clic()に_this.id_を出力しようとしましたが、結果はありませんでした。

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>
_
23
samach

クロージャーを使用してパラメーターを渡すことができます。

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

ただし、フレームにアクセスするためのより良いアプローチを使用することをお勧めします(フレームウィンドウに名前でアクセスするDOM0の方法を使用していると想定できます-後方互換性のためだけに保持されています):

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

iframeにはonclickイベントはありませんが、iframeのonloadイベントとこのような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>

私はそれがあなたに役立つことを願っています...

24
Gaurav Agrawal