jQuery IE9-10: 无法获取 属性 未定义或空引用的替换
jQuery IE9-10: unable to get property replace of undefined or null reference
我正在开发一个包含以下库的页面;
- jQuery (1.7.2)(由于依赖问题的旧版本,但已尝试到 1.9.1,未解决问题)。
- Backbone (1.1.0)
- lodash (2.4.1)
- 现代化 (2.7.1)
- gsap (1.17.0)
该页面使用 canvas 和 gsap 制作动画。在 IE11、Chrome、Safari、Firefox 和 IE8(IE8 禁用动画)中一切正常,但 IE9 和 10 只是在控制台中抛出此错误
unable to get property 'replace' of undefined or null reference
引用的行在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 );
},
我不知道如何确定我的代码的哪一部分导致此 jQuery 代码被触发,所以我不确定我这边的问题是什么。
有人知道解决这个问题的办法吗?或者,我如何查看我的代码的哪一部分导致此 jquery 代码触发(使用 IE 开发工具)?
您使用什么工具进行调试?我为您提供了 Chrome 调试控制台
的解决方案
1.首先去控制台找到jquery脚本文件,右键select"Blackbox script"调试时会忽略它,只有你的文件会被考虑
2. 激活break on errors 将在发生异常的代码行触发断点
检查 JavaScript: Is there a way to get Chrome to break on all errors?
和 https://developer.chrome.com/devtools/docs/blackboxing
也许我在这里错了但是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 );
},
原来这个问题不是 IE 本身的问题,而是我试图访问一个还不完全存在的对象。其他浏览器这不是问题(也许他们的 JS 引擎足够快,这不是问题),但我现在添加了检查以确保在执行有问题的功能和问题之前加载了所有相关内容似乎不见了。谢谢大家的帮助。
我正在开发一个包含以下库的页面;
- jQuery (1.7.2)(由于依赖问题的旧版本,但已尝试到 1.9.1,未解决问题)。
- Backbone (1.1.0)
- lodash (2.4.1)
- 现代化 (2.7.1)
- gsap (1.17.0)
该页面使用 canvas 和 gsap 制作动画。在 IE11、Chrome、Safari、Firefox 和 IE8(IE8 禁用动画)中一切正常,但 IE9 和 10 只是在控制台中抛出此错误
unable to get property 'replace' of undefined or null reference
引用的行在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 );
},
我不知道如何确定我的代码的哪一部分导致此 jQuery 代码被触发,所以我不确定我这边的问题是什么。
有人知道解决这个问题的办法吗?或者,我如何查看我的代码的哪一部分导致此 jquery 代码触发(使用 IE 开发工具)?
您使用什么工具进行调试?我为您提供了 Chrome 调试控制台
的解决方案
1.首先去控制台找到jquery脚本文件,右键select"Blackbox script"调试时会忽略它,只有你的文件会被考虑
2. 激活break on errors 将在发生异常的代码行触发断点
检查 JavaScript: Is there a way to get Chrome to break on all errors?
和 https://developer.chrome.com/devtools/docs/blackboxing
也许我在这里错了但是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 );
},
原来这个问题不是 IE 本身的问题,而是我试图访问一个还不完全存在的对象。其他浏览器这不是问题(也许他们的 JS 引擎足够快,这不是问题),但我现在添加了检查以确保在执行有问题的功能和问题之前加载了所有相关内容似乎不见了。谢谢大家的帮助。