Closed dynamis closed 5 years ago
@dynamis https://github.com/webdino/amethyst/commit/c86b3cf80e5c0830aec5d8bed57b0fd08b9ddfd2 iframeからbrowserに変更したので、こちらも何か挙動に変化があるかもしれません。
iframeからbrowserに変更した状態で、console.log(window.parent);した結果をWebIDEで調べたところ、browser.xulのbrowserの上にあるwindowではなく自身を返す動作になってるようで、これは通常のブラウザと同じ動作です。 あらためてご確認をお願いします。 @dynamis
iframe から browser にしたら window == window.parent が true となり、リモートデバッグもこれまで通りできるし、その他ぱっと見た感じでは期待通りになっているので解決としてクローズします。
xul iframe でコンテンツを読み込んでいるとコンテンツページのコンテキストは通常のブラウザのコンテキストではなく、xul ファイルの中の iframe としてのコンテキストになってしまっている。
具体的には window.parent が普通はトップレベルでは undefined になるはずが browser.xul オブジェクトになる。その結果。window.parent.postMessage() とかしようとすると
Permission denied to access property "postMessage"
などと言われる。組込 UI 向けに専用でコンテンツを作っている限りは問題にならないが、一般の Web との互換性が損なわれてしまっているため出来ればこの非互換は制限事項では無く解決したい。
現在の Firefox の browser.xul では iframe ではなく tabbox > tabpanel にコンテンツを読み込んでいるようなので、そのあたり参考にして同様の挙動になる方法を探りたい。