我有一个产品,它在Flash中播放视频(如果可用),如果Flash不可用,则回退到HTML5。
我无法找到一种方法来确定JavaScript是否在带有“sandbox”属性的Iframe内执行,这对我的解决方案非常必要,因为沙盒化的Iframe会禁用所有插件。沙盒化的Iframe可能只是这样:
<iframe src="http://www.cross-domain.com/" sandbox="allow-scripts">
为了确定Flash是否可用,我正在使用swfobject的方法检查navigator.plugins ["Shockwave Flash"] .description,即使在沙箱内嵌iframe中也可以设置。我可以加载swf对象,但无法播放。
要重现此问题,请访问http://jsfiddle.net/max_winderbaum/9cqkjo45/,打开Chrome检查器并单击“运行”。跨域站点上的脚本将在沙箱内嵌iframe的上下文中暂停。
根据W3规范http://dev.w3.org/html5/spec-preview/browsers.html#sandboxing-flag-set,文档应该有一个“活动沙箱标志集” JavaScript可以访问(至少这就是我阅读规范的方式)。似乎没有任何标志设置在iframe的文档上。
有人有什么想法/解决方案来检测JavaScript是否在沙箱内嵌iframe中执行吗?