如何解决此错误类型' Uncaught TypeError:(...)不是函数'?

时间:2017-04-06 19:03:15

标签: javascript jquery error-handling uncaught-typeerror getscript

我知道stackoverflow上的另一个问题,并且已经查看了它,但它没有回答/解决我发生错误的情况。< / em>

我试图制作两个脚本embed.js(插件)&amp;加载文档时,more-content-arrow.js(我的脚本)在页面上正常工作。何时以及如果我删除任何一个脚本,一个或另一个将工作,但不是两个脚本在一起。当页面首先完成加载时,它将正确加载more-content-arrow.js,然后当滚动事件再次触发时,它将在控制台浏览器中发出此错误消息:

VM249 embed.js:2 Uncaught TypeError: ((fe.event.special[s.origType] || (intermediate value)).handle || s.handler).apply is not a function
    at dispatch (VM249 embed.js:2)
    at m.handle (VM249 embed.js:2)

我试图通过添加jQuery.noConflict();来解决它,但这并不起作用,因为我认为它可能是两个脚本之间的冲突。我发现摆脱错误消息的唯一方法是删除两个脚本文件之一或删除$.getScript(...),但我不想这样做。我希望能够让两个脚本在页面中正常运行。

JS:

$(document).ready(function(){
  //jQuery.noConflict();
  $.getScript("more-content-arrow.js", function(){
    alert("arrow script loaded and executed.");
  });
});

我在这里重新创建了一个带有未捕获类型错误的jsfiddle:

https://jsfiddle.net/wr6cc2ct/2/

1 个答案:

答案 0 :(得分:3)

您的错误出现在more-content-arrow.js文件中,您传递的是一个整数作为第三个参数而不是处理程序,这里是.on()的jquery文档

$(window).on('scroll', function () {
    if (!footerIsVisible) {
        $('.bounce').fadeIn(300);
    }
}); // <--- removed integer here.

更新

或者,您可以使用event.stopPropagation();并在jquery.unevent.js脚本之后重新排序ember.js脚本

$(window).on('scroll', function (e) {
    e.stopPropagation();
    if (!footerIsVisible) {
        $('.bounce').fadeIn(300);
    }
}, 800);