iframe内に入力ボックスがあります。iframe内の入力ボックスでFocusOutイベントが発生していない
$("iframe").contents().find('#testDiv').on('keypress input focusout', 'input', function(event) {
alert(event.type);
});
両方keypress
とinput
イベントはIFRAME内の入力ボックスに解雇されています。私はこのような入力ボックスにkeypress
、input
とfocusout
イベントリスナーを添付しています。しかし、focusout
イベントは、入力ボックスのぼかしでは発生しません。
入力ボックスがiframe内に配置されていない場合、同じ構文とイベントバインディングがうまく機能します。 3つのイベントはすべて、iframe内にない入力ボックスで発生します。
注: iframe内のコンテンツが動的なので、イベント委任を使用しています。
HTMLマークアップ:
<iframe>
<body>
</body>
</iframe>
<div id="testDiv1">
<input type="text" />
</div>
Javascriptのコード:ここで私が試したもののモックアップです
var $iframe = $("iframe");
var iframe = $iframe[0];
var doc = iframe.document;
var content = '<div id="testDiv"><input type="text" /></div>';
if (iframe.contentDocument) {
doc = iframe.contentDocument;
} else if (iframe.contentWindow) {
doc = iframe.contentWindow.document;
}
doc.open();
doc.writeln(content);
doc.close();
$("iframe").contents().find('#testDiv').on('keypress input focusout', 'input', function(event) {
alert(event.type);
});
$('#testDiv1').on('keypress input focusout', 'input', function(event) {
alert(event.type);
});
が助けてください!入力ボックスをiframeから移動することはできません。
まさに私がテストしていたものです。フォーカスとぼかしがiFrame内からトリガーされた唯一のイベントであることを確認できます –
Dang!つまり、iframe内に 'blur'イベントや' focus'イベントを委譲する方法はありませんか? – user3613129
情報ありがとうございました:)。私はこの答えを受け入れるべきですが、もう少しの反応を待つでしょう。 – user3613129