我无法让 popcorn.js 与 IE8 一起玩。我只使用 popcorn-ie8 包装器、媒体原型和 vimeo 插件。
我的代码很简单:
var video = Popcorn.HTMLVimeoVideoElement('#video');
video.src = 'http://vimeo.com/18359846';
var example = Popcorn(video);
example.play()
IE8 报错:
'MediaError 未定义',popcorn._MediaElementProto.js (58)。
如果我使用 popcorn.js 的完整包发行版并将 IE8 shim 放在顶部,我的 IE 会迅速泄漏内存并崩溃。我还必须在 IE8 中禁用内存保护才能捕获错误,否则整个浏览器都会崩溃。
所以我把它缩减为只有 popcorn+ie8shim、mediaelement 核心和 vimeo 插件。
我在这里设置了一个 jsFiddle:http: //jsfiddle.net/EtepN/
您必须使用此 url 在 IE8 中查看结果,因为 jsFiddle 在 IE8 中不起作用:http: //jsfiddle.net/EtepN/embedded/result/
--编辑--
越来越近; 我为 MediaError 创建了一个闭包,这样 IE8 就不会在未定义的情况下引发错误 - 只需将其定义为另一个对象并将其设置为MediaError 对象。
(function(w) {
var _MediaError = w.MediaError;
if(!_MediaError) {
w.MediaError = _MediaError = (function() {
function MediaError(code, msg) {
this.code = code || null;
this.message = msg || "";
}
MediaError.MEDIA_ERR_NONE_ACTIVE = 0;
MediaError.MEDIA_ERR_ABORTED = 1;
MediaError.MEDIA_ERR_NETWORK = 2;
MediaError.MEDIA_ERR_DECODE = 3;
MediaError.MEDIA_ERR_NONE_SUPPORTED = 4;
return MediaError;
}());
}
}(window));
仍然没有让它在 IE8 中工作,但至少这是一个错误......