iframe に読み込まれた html ドキュメントがあります。
そのドキュメントの JavaScript でいくつかのポップアップ メニュー コードを開発し、メイン ドキュメントから iframe にコードを挿入します。
しかし、私のコードは " document
" オブジェクトを使用し、驚くべきことに iframe ドキュメントではなくメイン ドキュメントを参照しているため、iframe では機能しません。
また、コンテンツの選択をいじっwindow.getSelection()
ていますが、メインのドキュメントの選択に戻る必要があり、window.frames[0].getSelection()
代わりに必要です。
私は間違っていますか?
これを克服する簡単な解決策はありますか?
更新: (明確化)
Bergi が指摘したように、私の質問は、注入された JavaScript コードを正しく実行して、iframe のグローバル スコープではなくローカル スコープを取得する方法についてです。
だから私はコード内の とを書き換える 必要はありません...document
window
更新: (私の html のスケルトン)
<html>
<head></head> <!-- script launches on jquery's $(document).ready -->
<body>
<iframe>
[
<body>
...
<script></script> <!-- code injected here from the code (appended to the body) -->
</body>
]
</iframe>
</body>
</html>
スクリプトは次のようになります (jquery を使用):
$(function(){
$('iframe').load(function(){
var $doc = $('iframe').contents();
var $head = $('head', $doc);
$head.append('<link rel="stylesheet" href="/stylesheets/book-popup-menu.css" />');
var $body = $('body', $doc);
$body.append(' \
<div id="popup"> \
</div> \
');
$body.append(' \
<script type="text/javascript"> \
console.log(document.body);// it still displays the global body \
</script> \
');
});
});
更新:問題を示すフィドル