如何解决 video.js 5.6.0 运行时错误 - Object 不支持此 属性 或方法?

How do I resolve video.js 5.6.0 runtime error - Object doesn't support this property or method?

我最近切换到使用 video.js 版本 5.6.0(之前使用的是 4.x 版本),并注意到我现在使用 non-minified 版本时总是出现以下错误的 video.js:

http://vjs.zencdn.net/5.6.0/video.js 的第 811 行第 5 列抛出了异常 0x800a01b6 - JavaScript 运行时错误:Object 不支持此 属性 或方法

我在使用 video.js 和行时没有做任何更改:

<script src="http://vjs.zencdn.net/5.6.0/video.js"></script>

出现在视频元素的正下方。匹配的 5.6.0 CSS 出现在标头部分的 link 标记中。

这是在 Windows 8.1 上的 Internet Explorer 11 下发生的。错误报告到 Visual Studio 2013。

我尝试回退到 video.js 版本 5.4.6,但它在同一行给出了相同的错误。我尝试了 5.6.0 和 5.4.6 的缩小版本,但都给出了相同的错误(当然 line/column 不同)。

我已经检查了违规区域,但必须承认我在 JavaScript 中 well-versed 还不足以确定此问题的原因。我 commented-out 我自己的 JavaScript,以确保它不会以某种方式与 video.js 交互,但我仍然始终收到错误。

关于如何修复或解决此错误的任何想法?尽管出现此错误,video.js 播放器似乎仍按预期工作,因此这不是阻塞问题...只是一个问题。

如果您查看脚本的那部分,您会看到在 try catch 块中处理错误的行,正是因为在现代浏览器中会出现错误。后面的代码在不报错的浏览器上只需要运行即可。这是来自 video.js 使用的实用程序库 lodash。这类测试并不少见。

var isHostObject = (function() {
  try {
    Object({ 'toString': 0 } + ''); // Line 811
  } catch(e) {
    return function() { return false; };
  }
  return function(value) {
    // IE < 9 presents many host objects as `Object` objects that can coerce
    // to strings despite having improperly defined `toString` methods.
    return typeof value.toString != 'function' && typeof (value + '') == 'string';
  };
}());

这里没有要解决的问题。如果您在调试工具中打开了 'break on all exceptions'(术语在 Visual Studio 中可能有所不同),您只会看到此错误。 'Break on unhandled exceptions' 通常更有用,因为它显示了预期之外且需要采取措施的错误。