zoukankan      html  css  js  c++  java
  • 一个编码引发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“未结束的字符串常量”,估计早就解决了。

  • 相关阅读:
    JDK的几种分析工具
    心理价值
    通过Proxool辅助数据库优化
    人生缄言
    grep 用法
    多服务器快速定位
    RandomAccessFile读取远程系统日志
    20101116 视频处理几个常用指令
    Flickr架构
    JAVA正则表达式语法
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/2954927.html
Copyright © 2011-2022 走看看