前提・実現したいこと
iframe構造のHTMLがあり
(以下、iframe設置側を親、iframeに呼び出されているページを子とする)
子に設定されているイベントを親側から発生させたい
発生している問題・試したこと
子側でのイベントは正しく設定されており、子自身によるtriggerであれば期待通りに動作します。
それと似た形で親から同じようにtriggerしたいのですが、うまく動きませんでした。(下記コードの①)
いろいろ調べてこちらを参考にしてみましたが、これもうまくいきません。(下記コードの②)
解釈が間違っているのでしょうか…。
https://qiita.com/MasamotoMiyata/items/7d832a363ce3bbd245ac
OSはWindows10、ブラウザは以下で確認しています。
- GoogleChrome 68.0
- Firefox 61.0
該当のソースコード
【iframeの親】test.html(body内抜粋)
HTML
1<!-- iframeで子htmlを呼び出し --> 2<iframe id="testiframe" src="child.html" name="testname"></iframe> 3 4<!-- jQuery読み込み --> 5<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 6<script> 7// 子iframeのロードが完了したら、子の「#clickarea」をダブルクリックしたことにしたい 8$('#testiframe').load(function(){ 9 // この部分をなんとかしたい /////////////////////////// 10 11 // ①単純に、対象のオブジェクトにそのままtriggerを渡してみる 12 // →反応なし 13 $("#testiframe").contents().find("#clickarea").trigger("dblclick"); 14 15 // ②調べた内容をもとに書き換えてみる 16 // →エラー「document.testname is undefined」 17 document.testname.$(document.testname.document).find("#clickarea").trigger("dblclick"); 18 19 /////////////////////////////////////////////////////// 20}); 21</script>
【iframeの子】child.html(body内抜粋)
HTML
1<!-- ダブルクリックの対象エリア --> 2<div id="clickarea">ここをダブルクリック</div> 3 4<!-- jQuery読み込み --> 5<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 6<script> 7// ダブルクリックされたときのイベント 8$("#clickarea").on("dblclick", function(){ 9 console.log("ダブルクリックされました"); 10}); 11 12// ここで実行した場合は動く 13// $("#clickarea").trigger("dblclick"); 14</script>
ご存知の方、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/03 08:53
2018/09/03 09:37