0

I've an extension, and an XUL file inside it (let's call it A). XUL file contains an <iframe>, where is loaded some web page (let's call it B). B is loaded from the different domain.
A is parent to B. I want to send a message from within B to A using window.parent.postMessage(). I'm getting the following exception:

... permission denied to B to call method ChromeWindow.postMessage

How to fix that error? If there is no way to do that, how can I pass message from B to A?

I am using Firefox 16.0.1 under Windows 7.

4

3 に答える 3

1

'postMessage' を xul-background-task に送信できなかった html-popup (ローカル) があっただけです。奇妙なことに、独自の MessageEvent を開始することで (postMessage が行うのとまったく同じこと)、(時代遅れだと思います) フォールバックを使用して、機能するようになったと思います。

コンテンツ内の私のスクリプト:

var Communicator = 
{
    postMessage: function(data) 
    { 
        // We need some element to attach the event to, since "window" wont work
        // let's just use a fallback JSON-stringified textnode
        var request = document.createTextNode(JSON.stringify(data));
        // and as always attach it to the current contentwindow
        document.head.appendChild(request);
        // Now let's make a MessageEvent of our own, just like window.postMessage would do
        var event = document.createEvent("MessageEvent");
        event.initMessageEvent ("own_message", true, false, data, window.location, 0, window, null);
        // you might want to change "own_message" back to "message" or whatever you like
        //and there we go
        request.dispatchEvent(event);
    }
}

window.postMessage(data) の代わりに Communicator.postMessage(data) を使用するようになりました。今、私のオーバーレイには、私たちの古き良きものしかありません

addEventListener('own_message', someMessageFunc, false, true);
//or maybe even "message" just like originally

うまくいけば、これもうまくいくでしょう(iframeではチェックしていません...)

于 2013-01-11T13:19:11.950 に答える
0

iframeBのを確認する必要がありますtype

編集:

どうやらあなたはあなたのクロームをcontentaccessibleとしてフラグを立てなければならず、そしてセキュリティを考慮に入れなければなりません。

于 2012-10-27T09:27:57.847 に答える
0

誰かが同じ問題に直面した場合に備えて投稿するだけです。ここ
に記載されているように、イベントを使用して B 内から A にメッセージを投稿することに成功しました。

しかし、window.parent.postMessage()まだ意図したとおりに機能しないため、答えではありません。

于 2012-11-06T07:56:19.180 に答える