Chrome拡張機能を介してウェブページ上のiframeの一部を操作しようとしています。
毎回、「安全でないJavaScriptがURLを使用してフレームにアクセスしようとしました」というエラーが表示されます。 Chrome拡張機能のドキュメントを読むと、manifest.jsonでこれを行うための権限を要求できるはずです。しかし、私がしたことは何も私がこれをすることを可能にしないようです。
私のmanifest.json:
{
"name": "Manipulate an iframe",
"description": "Test to manipulate an iframe",
"version": "1.0",
"background": { "scripts": ["background.js"] },
"permissions": [
"tabs",
"http://*/",
"https://*/",
"<all_urls>"
],
"browser_action": {
"name": "Modify iframe",
"icons": ["icon.png"]
},
"manifest_version": 2
}
私のbackground.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { allFrames:true, runAt:"document_end", file: "jquery-latest.min.js" }, function() {
chrome.tabs.executeScript(null, { allFrames:true, runAt:"document_end", file: "content-script.js" });
});
});
私のcontent-script.js:
$('.container').css('width','98%');
$('#myPage iframe').contents().find('#code').unwrap()
拡張ボタンをクリックするとコンテナのサイズが正しく変更されますが、iframeに触れることができません。可能な限りすべての権限を付与したようですが、他に権限を指定する必要がある場所はありますか?
編集 :
この回答は、Chrome拡張機能のさまざまな種類のスクリプトを理解するのに役立つことがわかりました:https ://stackoverflow.com/a/9916089/1698152
フラグが立てられた重複回答:Chromeの拡張コンテンツスクリプトからiframeコンテンツにアクセスするだけで、私の質問に答えることができました。
tabs.executeScriptを介してすべてのフレームに挿入しようとする代わりに、マニフェストで定義することにより、すべてのフレームにコンテンツスクリプトを挿入しました。その後、メッセージパッシングを介してバックグラウンドページスクリプトからこれらのスクリプトの関数を呼び出すことができました。
しかし、なぜこれが私がすでに行っていたものと異なるのかはまだわかりません。