2016-04-26 7 views
1

私はscript.jsファイルをコンテンツスクリプトファイル経由でウェブページのすべてのiFramesに挿入しています。ウェブページ内のすべてのiFrameをループし、script.js fileheadセクションに挿入してください。Google ChromeのContentScript経由でiFrameでJSファイルを挿入

var $iframe = $('#iframe'); 
    $iframe.ready(function() { 
     $iframe.contents().find("head") 
      .append("<script src='chrome://ext3241241234/script.js'/>"); 
    }); 

マイscript.jsファイルには、次のコードが含まれます:単にbodydiv要素を挿入

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ページのドキュメントであることがわかりません。

希望私の問題はここではっきりしています。

誰かが助けることができますか?

詳細情報が必要な場合は教えてください。

+0

'manifest.json'とスクリプトの挿入方法も提供できますか? –

+0

私はコンテンツスクリプトでコードを介して注入しました。今私はそのコードを持っていません。その単純なiFrame.contentDocument.append(... scriptタグ...)。 – Savaratkar

+0

多分、これがページのスコープを維持する理由です。 – smnbbrv

答えて

0

接頭語chrome-extensionではなく、script.jsを直接使用してください。