在Firefox中调用方法ModalContentWindow.postMessage的权限被拒绝

时间:2014-02-27 15:54:00

标签: javascript firefox youtube-api postmessage google-api-js-client

我正在使用YouTube Data API v3。 Google建议使用以下方法加载lib:

<script src="https://apis.google.com/js/client.js?onload=googleApiClientReady">

它工作正常但是当我将这样的脚本加载到Firefox中的模式窗口时(它必须是这样的。我无法控制Sitecore调用我的窗口小部件的方式)它失败了:

错误:权限被拒绝 https://accounts.google.com调用方法 ModalContentWindow.postMessage

它来自内部回调,即使我省略client.js部分,Google ?onload在加载时也会调​​用。

精确加载到独立选项卡中。 IE和Chrome无论如何都可以。

有没有一种方法可以让它在FF模态窗口中运行? (如果重要的话,我正在运行27.0.1)

更新:我通过直接调用YouTube Data API HTTP端点来解决这个问题。我仍然想知道FF的模态窗口中的postMessage() thingy是什么,以及谷歌client.js的作者是否知道。

1 个答案:

答案 0 :(得分:0)

主要问题是Firefox有针对capability.policy.default.Window.postMessage.get的策略,但它没有策略capability.policy.default.ModalContentWindow.postMessage.get。 有两种方法可以解决这个问题。

  • 为Firefox pref添加pref(&#34; capability.policy.default.ModalContentWindow.postMessage.get&#34;,&#34; allAccess&#34;);
  • 而不是将脚本加载到模态窗口中直接将其放入iframe中。 iframe会有类Window。
顺便说一下,我在FF28中遇到过这个问题。在FF31一切正常。