jQuery IE9-10:无法获取undefined或null引用的属性替换

时间:2015-08-28 20:54:50

标签: javascript jquery internet-explorer backbone.js

我正在开发包含以下库的页面;

  • jQuery(1.7.2)(旧版本因为依赖性问题,但已经尝试过1.9.1,并没有解决问题)。
  • Backbone(1.1.0)
  • lodash(2.4.1)
  • modernizr(2.7.1)
  • gsap(1.17.0)

该页面使用canvas和gsap进行动画制作。在IE11,Chrome,Safari,Firefox和IE8(IE8禁用动画)中,一切都很好用,但IE9和10只是在控制台中抛出此错误而且

  

无法获得财产'替换'未定义或空引用

引用的行在jquery.js第622行,这是此代码中的return语句:

// Convert dashed to camelCase; used by the css and data modules
// Microsoft forgot to hump their vendor prefix (#9572)
camelCase: function( string ) {
    return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},

我无法弄清楚如何确定MY代码的哪个部分导致此jQuery代码触发,因此我不确定我的问题可能是什么。

有人知道解决这个问题吗?或者,我如何查看我的代码的哪一部分导致此jquery代码触发(使用IE开发工具)?

3 个答案:

答案 0 :(得分:1)

原来这个问题并不是IE的本质错误,而是我试图访问一个尚未完全存在的对象。其他浏览器这不是一个问题(也许他们的JS引擎只是速度足以让它成为一个非问题),但我现在添加了检查以确保在执行有问题的功能之前加载了所有相关内容,这个问题似乎已经消失了。感谢所有人的帮助。

答案 1 :(得分:0)

您使用什么样的工具进行调试?我为Chrome调试控制台提供了解决方案 1.首先在控制台中找到jquery脚本文件,右键单击并选择" Blackbox脚本"在调试时它将被忽略,只有你的文件才会被视为
2.激活中断错误,并在发生异常的代码行上触发断点 检查JavaScript: Is there a way to get Chrome to break on all errors?
https://developer.chrome.com/devtools/docs/blackboxing

答案 2 :(得分:0)

也许我错了,但有可能IE8-9" string"是一个保留字?也许不吧。但唯一的一次.replace会显示该信息,如果你没有喂它一串。

camelCase: function( string ) {
    if(!string){ 
         console.log("string is falsy", string);
         return string;
    }
    return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},