私の内線番号から読み込まれたiframeから、内線(バックグラウンドスクリプトまたはコンテンツスクリプト)にメッセージを送信しようとしています。 作成されたIframeは、コンテンツスクリプトを介して内線からロードされます。 作成されたiframeと拡張機能の間の通信、Google Chromeの拡張子
{
"author": "***********",
"background": {
"page": "back/background.html",
"persistent": true
},
"browser_action": {
"default_title": "***",
"default_popup": "./popup/popup.html"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["./content/allurls.js"],
"all_frames":true
},
{
"matches": ["<all_urls>"],
"js": ["./banner/confirm_banner.js"]
}
],
"web_accessible_resources": [
"frame.html"
],
"description": "oui",
"manifest_version": 2,
"name": "***",
"permissions": ["tabs"],
"version": "1.0"
}
Confirm_banner.js(インラインフレームをロード)
manifest.jsonを...私が通信する方法を探していますが、すべての私の試みは失敗した
var extensionOrigin = 'chrome-extension://' + chrome.runtime.id;
window.onload = load_iframe();
function load_iframe()
{
if (!location.ancestorOrigins.contains(extensionOrigin))
{
var iframe = document.createElement('iframe');
iframe.src = chrome.runtime.getURL('../frame.html');
iframe.style.cssText = 'position:fixed;top:0;left:0;display:block;' +
'width:100%;height:40px;';
document.body.appendChild(iframe);
}
}
Frame.js(frame.htmlにリンクされたスクリプト)
$(document).ready(function()
{
$('#jamais').click(function()
{
send_message("BANNER", "jamais");
alert("send");
});
});
function send_message(type, data)
{
var msg = {
type: type,
data: data
};
window.postMessage(msg, "*");
}
allurls.jsでハンドラ(コンテンツスクリプト)
window.addEventListener('message', function(event) {
if (event.data.type && (event.data.type === 'BANNER'))
{
alert("ouimonsieur");
}
});
のでiframe.jsからのメッセージがよく(警告によりprooved)が送信されますが、コンテンツのスクリプトは前にも、そこから何を受け取るん:
if (event.data.type && (event.data.type === 'BANNER'))
誰かが(私もtop.window.postmessageで試してみました)何が間違っているか、私は使用することができ、他のどのようなメッセージパッシングプロトコル見ることができますか?
iframeの 'window'は、iframeのウィンドウを参照します。あなたは '親 'に送信する必要があります – wOxxOm
ハムok私はそれを試みます、しかし、コンテンツスクリプトは、ページ内のすべてのiframeに行くことになっているので、私はまだそれが動作しない理由を理解していません。 –
'Frame.js'はコンテンツスクリプトではなく、iframeスクリプトであり、拡張機能のコンテキストで動作します。 – wOxxOm