我无法让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垫片放在顶部,我的IE会迅速泄漏内存并崩溃。我还必须在IE8中禁用内存保护以捕获错误,否则整个浏览器崩溃。
所以我把它切成了爆米花+ ie8shim,mediaelement核心和vimeo插件。
我在这里设置了一个jsFiddle:http://jsfiddle.net/EtepN/
您必须使用此网址在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中工作,但这至少是一个错误....