问题描述:
页面引入一个js文件,其中定义了函数或对象,然后在页面中调用函数或对象时,在IE6会报“语法错误”或“缺少对象”。在IE6+或者IE7却运行正常。
问题分析:
这个对象在引入的JS文件中是存在的,因为在IE6+以上的浏览器都可以正常运行。这个问题在于文件编码上,如果JS文件编码与当前页面的编码不一致,就可能导致在IE6中页面不能正常获取和解析JS文件中的内容,在IE6中,默认引入的文件和页面的编码是一致的。在IE6+以上的浏览器中,一般浏览器会自动识别每个外部文件的编码并进行解析;
问题解决:
一:引入js文件时加charset属性,保持与页面编码一致;
二:修改引入文件编码格式;
三:新建一个文件格式同页面编码格式一致,复制粘贴内容;(个人建议第三种方法,但建议在导入js时加上charset属性!)
发现问题:
由于重装系统,发布项目后发现js报错:报语法错误还有缺少对象。郁闷以前系统是ie7,重装系统后为ie6.刚开始以为是浏览器版本问题,以为页面导入的js里面有ie6不兼容的代码!
所以最后把js一行一行注释掉,当最后js文件全删掉了,还出现上面错误。
------超级郁闷以前代码也没事,怎么重装个系统就坏了~最后找出以前项目发布了,在ie6下没有错误,代码完全一样。
-----不知还能否用郁闷一词不?想了半天,想到编码问题。以前项目编码为gb2312,现在项目改为UTF-8加上后没起作用,再到js该编码格式改为UTF-8运行也不行。最后新建一个js文件编码格式改为utf-8,发布OK。
晕死,一般编码修改(1).增加charset。(2).修改文件编码格式。还到tomcat下查看也已经修改过了。不知道怎么回事!可能要全删了在发布吧!!!不过问题总算解决~要是不重装系统,还发现不了这个小bug----记下以后防止这种错误发生!
下了个不js文件来用,放到ff,chrome,IE8一切都正常,到ie6下报错,居然提示找不到那个函数,报“错误’xx’未定义”。把调用函数代码删除掉居然报后面一个括弧错误。
用编辑的器发现字体显示得和页面不一样。因为我喜欢用utf-8的。发现js文件的编码是gb2312。然后重新建个js文件把原js文件utf-8编码里的代码复杂到记事本再复制进去。就ok了。
IE6该是退出历史舞台的时候了,郁闷之,让我思考了好久,明明有的居然硬是找不到,想抽他Y的,呵呵