您的位置:首页 > Web前端 > JavaScript

一个编码引发js错误的问题

2013-03-12 01:03 513 查看
  在做一个网站后台的时候,网页引用的一个删除商品的函数在IE6,IE7中死活不能执行。狗血的IE6 IE7不像chrome那样有控制台,因此调试起来非常麻烦,只给了一个大概行数,和对象undefined。

  既然在chrome,ie9,ff中能执行,在IE6,IE7中失败,首先想到的就是兼容问题。但函数里面都是用jquery实现的,除了confirm(),应该不存在兼容问题。于是又想到一个事情:网站是基于frameset,难道在frame页中引用js,不能在子frame中调用?于是将原来的onclick="deleteProduct()"改成onclick="window.top.frames[2].deleteProduct()"又不行。

  于是干脆逐句逐句来调试。将admin.js里面的所有代码删除,强刷页面(在WINDOWS 7中使用thinapp ie6强刷也不会强制获取新版本js,郁闷,只能每次都删除缓存文件)。一路追踪到一句if(!confirm("确定删除勾选项?")){return false;} 上。但语法怎样看也不像有错误,但去了这句,就正常了,一加上这句,网页就报“未结束的字符串常量”,问题肯定在这句身上。google了一下,发现原来是编码问题。

  问题的原因就是:我的frameset文件都是html文件。在dw新建的时候不知道为什么,文件是ansi编码的。meta中的charset却又是gb2312,而js文件却是utf-8,这样在加载js时候,utf8的js被加载到gb2312的dom中,就出现了字符串常量为结束的情况。

  于是将所有的frame文件重新保存成utf-8,并修改meta中的charset为utf-8,问题解决。

总结:

  1.通常google过某个问题,但好像没什么人遇到过,那几乎可以说明这个问题是个伪问题。

  2.IE的提示还是有点用的,如果我能早点google“未结束的字符串常量”,估计早就解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: