我正在尝试使用api加载youtube视频。我复制并粘贴了示例代码。但当兼容模式打开时,我在InternetExplorer8中遇到了一个错误,我想强制使用8模式。
这就是错误:
Message: 'JSON' is undefined
Line: 33
Char: 136
Code: 0
URI: http://s.ytimg.com/yt/jsbin/www-embed_core_module-vflDULhso.js
这是具有示例代码+强制模式8:的html
http://cdn.radicalislam.org/enriched/test.html
YouTube iframe API依赖于仅由IE8+在标准模式下提供的几个功能。
这些在这里的"要求"中提到:
https://developers.google.com/youtube/iframe_api_reference
特别是(除了您提到的JSON依赖性之外)对postMessage API有一个要求,这是javascript库无法提供的。最终的结果是,YouTube iframe API不能在IE8上以兼容模式使用,也不能被任何其他不支持postMessage的浏览器使用。
虽然IE8确实支持标准模式下的需求,但切换到兼容模式将打破这种行为。
看过你发布的链接后,你似乎添加了一个doctype来强制标准模式——这解决了问题吗?
这个错误非常令人惊讶,因为AFAIK JSON支持不再是问题,因为现在几乎所有浏览器都支持它(http://caniuse.com/json)。然而,在您的情况下似乎不支持JSON,因此您需要一个polyfill,如json2
。加载它Modernizr使用这个:
Modernizr.load({
test: !!window.JSON && !!JSON.parse,
nope: 'json2.js'
});
更新:我忽略了"我可以使用吗"页面底部的一条注释;要在IE8中支持JSON,您必须在HTML顶部使用HTML5 doctype作为<!DOCTYPE html>
。