【问题标题】:Permission denied to call method ModalContentWindow.postMessage in Firefox在 Firefox 中调用方法 ModalContentWindow.postMessage 的权限被拒绝
【发布时间】:2014-03-31 04:23:44
【问题描述】:

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

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

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

错误:Permission denied for https://accounts.google.com to call method ModalContentWindow.postMessage

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

加载到独立选项卡中可以正常工作。无论哪种方式,IE 和 Chrome 都做得很好。

有没有好办法让它在 FF 模态窗口中工作? (如果重要的话,我正在运行 27.0.1)

更新:我通过直接调用 YouTube 数据 API HTTP 端点来解决它。我仍然想知道 FF 模态窗口中的 postMessage() thingy 是怎么回事,以及 Google 的 client.js 的作者是否知道它。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-04
      • 2010-10-28
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 2022-11-05
      • 2018-06-11
      • 2015-08-30
      相关资源
      最近更新 更多