【问题标题】:Don't add methods to the wrong prototype不要向错误的原型添加方法
【发布时间】:2019-05-28 01:53:45
【问题描述】:

我将 jQuery 与 Electron 应用程序一起使用,但我总是收到一个似乎与 jQuery 的补间函数相对应的错误。

我正在通过标准节点加载 jQuery:

<script type="text/javascript">window.$ = window.jQuery = require('jquery');</script>

当我通过脚本 src 包含 jQuery 时,我得到了同样的错误(jQuery 版本 3.3.1)

例如调用$("#loading-overlay").fadeOut(200);会导致:

Uncaught TypeError: (Animation.tweeners[prop] || []).concat is not a function
    at createTween ([PATH]/node_modules/jquery/dist/jquery.js:6848)
    at Object.defaultPrefilter ([PATH]/node_modules/jquery/dist/jquery.js:7021)
    at Animation ([PATH]/node_modules/jquery/dist/jquery.js:7160)
    at HTMLDivElement.doAnimation ([PATH]/node_modules/jquery/dist/jquery.js:7293)
    at Function.dequeue ([PATH]/node_modules/jquery/dist/jquery.js:4376)
    at HTMLDivElement.<anonymous> ([PATH]/node_modules/jquery/dist/jquery.js:4418)
    at Function.each ([PATH]/node_modules/jquery/dist/jquery.js:354)
    at jQuery.fn.init.each ([PATH]/node_modules/jquery/dist/jquery.js:189)
    at jQuery.fn.init.queue ([PATH]/node_modules/jquery/dist/jquery.js:4411)
    at jQuery.fn.init.animate ([PATH]/node_modules/jquery/dist/jquery.js:7304)

我只有 Electron(4.0 版)有这个问题。有谁知道这是什么原因造成的吗?

【问题讨论】:

  • 有可能 $("#loading-overlay").fadeOut(200);在渲染 DOM 之前运行。您何时/如何调用此操作?
  • 在文档准备好之后的一段时间内调用它。所有其他 jQuery 函数一直在工作(只需调用 hide() 即可)。但是一旦涉及任何动画,我就会得到错误。
  • 我也查了下,Arrays的concat函数好像是存在的,并且在工作。

标签: javascript jquery node.js electron require


【解决方案1】:

好吧,这是我的愚蠢行为。自动完成使我将方法“each”添加到 Object 原型而不是我的自定义类中......这显然使 jQuery 感到困惑,因为它在 Animation.tweeners 中找到了属性“each”(因为它在所有对象中)。

但我了解到,当遇到一个非常令人困惑且毫无意义的错误时,请检查您是否不小心覆盖了您不想更改的原型...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 2019-01-17
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多