0

我无法让 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 中工作,但至少这是一个错误......

4

0 回答 0