火狐 functionName is not a function

本文详细记录了一次遇到的浏览器兼容性问题及其解决过程,涉及到JavaScript方法命名冲突导致的错误,并强调了在开发中应采取复杂命名和使用window函数定义方法的重要性,以避免不必要的麻烦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到了一个浏览器兼容的问题,很简单也很常见,但查起原因来有点难。所以在这里记录一下,做个备份。

 

基本业务是这样子的:点击一张图片显示数据选项。具体结构如下:

<div class="xiazai">
       <a href="javascript:void(0);" onclick="download('downLoadAlert',this);">
	<img src="images/xiazai.png" title="下载" /></a>
</div>
download方法是写在一个JS文件中的,且在当前JSP页面中有引用。基本结构如下:
function download(obj){
      ......
}
进行测试时在IE下很正常,火狐却报错:download() is not a function。很明显我的download是个方法且存在且当前页面能找到它(firebug的脚本选项下能找到引入的JS文件),为什么还会报这种错,网上查说因为系统中某个对象的ID或name叫这个所以找不到了,于是搜了当前JSP页面没找到,搜了整个项目果然有一个ID叫这个的,于是改成了downloadSet()方法。

 

再次测试,火狐还是不正常,报错:downloadSet is not defined。没有定义是不可能的,当前页面还能找到它呢。绝对又是兼容性问题,再查,没找到原因找到解决办法了。如下:

window.downloadSet=function(obj){
      ......
}
 如此之后,一切正常了。
得到的教训就是:在以后的开发中取名尽可能复杂点,或下划线或长名字;其次定义方法时最好写成window.functionName=function(){}的格式比较好。以免出现没必要的麻烦。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值