【问题标题】:Object doesn't support property or method 'on'对象不支持“on”属性或方法
【发布时间】:2015-04-09 20:48:43
【问题描述】:

我在 IE8 和 9 上遇到此错误。尚未测试更高版本,但它也来自我正在使用的名为 'Dropzonejs' 的插件。

在包含 dropzone 之后,在我的 onReady 函数中我有:

if (typeof(Dropzone) != 'undefined') {
    var dz = new Dropzone('#dropzone', {options: here});
    dz.on('drop', ondropfunctionhere);
}

options 对象有更多设置,但我将它们排除在外,因为我认为它们不是导致问题的原因。

如果已经检查:

if (typeof(dz.on) == 'undefined') {
     dz.on = function (a, b) {
        return this._callbacks = this._callbacks || {}, (this._callbacks[a] = this._callbacks[a] || []).push(b), this
    }
}

当我输出 dz.on 时,我从我的 chrome 调试中窃取了这个函数,但这实际上并没有触发任何回调。

【问题讨论】:

  • 你有没有在调试器中查看dz对象,看看它是什么,有什么方法?
  • 看到它在 Chrome 中运行良好我会假设该方法应该仍然存在于 IE 中,我在文档中没有读到任何其他说明,据说这并不意味着它不可能是真的
  • @jfriend00 我运行了dz.hasOwnProperty('on'),它返回false,我还检查了typeof(dz.on),它返回未定义。
  • 这是一个你不想使用hasOwnProperty()的情况,因为你也想在原型上看到东西。你想测试if (dz.on)console.log(typeof dz.on)。我询问在调试器中查看dz 的原因是,这可能会让您对正在发生的事情有所了解。另外,您在控制台中看到的确切错误是什么?
  • 请看我的编辑@jfriend00

标签: jquery internet-explorer object methods dropzone.js


【解决方案1】:

根据dropzone docs,不支持 IE8 和 IE9:

浏览器支持

Chrome 7+

火狐 4+

IE 10+

Opera 12+

(MacOS 的第 12 版已被禁用,因为它们的 API 有问题)

Safari 6+

【讨论】:

  • 它确实在那之后说,旧版浏览器仍然获得后备表单,只是没有拖放功能?
  • @ShannonHochkins - 您正在尝试设置放置区,对吗?您对 dropzone 不起作用感到惊讶吗?
  • Dropzone 做的不仅仅是拖放,我想仍然利用回调来上传进度、添加、成功。如果您还必须完全编写自己的回调和函数,那么他们为 ie9 实现后备表单有什么意义?
  • @ShannonHochkins - 最好将这类问题直接提交给 dropzone 人员。我只是想帮你解决问题。
猜你喜欢
  • 1970-01-01
  • 2019-07-05
  • 2015-04-14
  • 2020-09-03
  • 2014-01-12
  • 2016-08-20
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多