1

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

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

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

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

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

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

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

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

4

1 回答 1

0

主要问题是 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 中一切正常。

于 2014-08-20T20:41:27.500 回答