私はscript.js
ファイルをコンテンツスクリプトファイル経由でウェブページのすべてのiFramesに挿入しています。ウェブページ内のすべてのiFrameをループし、script.js file
をhead
セクションに挿入してください。Google ChromeのContentScript経由でiFrameでJSファイルを挿入
var $iframe = $('#iframe');
$iframe.ready(function() {
$iframe.contents().find("head")
.append("<script src='chrome://ext3241241234/script.js'/>");
});
マイscript.js
ファイルには、次のコードが含まれます:単にbody
にdiv
要素を挿入
var html = "<div id='cksBox'></div>"
$('body').append(html);
script.js
を
マイコンテンツスクリプトファイルには、コードを次が含まれています。したがって、私はすべてのiFramesのボディに最後にこのdiv要素があることを期待しています。
しかし、これは起こっていません。代わりに私のメイン/親body
要素は、iFrame本体の内部ではなく、このdiv要素を持っています。次のように発声し、私のChromeの拡張機能がロードされているウェブページである:
<html>
<body>
<div id='cksBox'></div>
<iframe>
<html>
<head>
<script src='chrome://ext3241241234/script.js'/>
</head>
<body/>
</html>
<iframe>
</body>
私は私のscript.js
ファイルがiFrameの内側にロードされていることがわかります。私はドキュメントを照会するときにscript.jsファイル内でこれをデバッグしようとしましたが、iFrameではなく親/メインhtmlのドキュメントを返します。 script.js
ファイルが実行されたときに、そのコンテキストがiframeである必要がありますが、メイン/親のWebページのドキュメントであることがわかりません。
希望私の問題はここではっきりしています。
誰かが助けることができますか?
詳細情報が必要な場合は教えてください。
'manifest.json'とスクリプトの挿入方法も提供できますか? –
私はコンテンツスクリプトでコードを介して注入しました。今私はそのコードを持っていません。その単純なiFrame.contentDocument.append(... scriptタグ...)。 – Savaratkar
多分、これがページのスコープを維持する理由です。 – smnbbrv