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


      在做一个网站后台的时候,网页引用的一个删除商品的函数在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“未结束的字符串常量”,估计早就解决了。

  • 相关阅读:
    1021 个位数统计
    1020 月饼
    1019 数字黑洞
    1018 锤子剪刀布
    1017 A除以B
    1016 部分A+B
    1015 德才论
    1014 福尔摩斯的约会
    cocos2d 间隔动作
    cocos2d 瞬时动作
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/2954927.html
Copyright © 2020-2023  润新知