zoukankan      html  css  js  c++  java
  • 思考:转义字符\的有趣现象

    使用document.write时,如果发现没有输出来,请注意有没有“\”存在,如果存在将其换掉,如:\"换成',即可正常输出!

    我们在后台拼写Html时因为"必须转义,故加上了\,而在javascript中\一般用于正则表达式的关键字符,

    这样我们拼出来的字符串,javascript可能不会认为是html而是正则表达式,所以没有输出来?

    2012-8-2 16:04


    2012-8-2 22:00

    我发现我上面的猜测是错误的,具体分析原来是这样的:(如果你感兴趣,可以跟着我的思路看下这个例子)

    test.html页面:<script type="javascript" src="Handler.ashx"></script>//正确吧!

    Handler.ashx:

    string code="<div onclick=\"add('a','b');\" >中国</div>";//正确吧!记为@
    HttpContext.Current.Response.Write("document.write(\"" + code + "\");");//也正确吧!

    但是一调试你会发现‘中国’两个字就是出不来,不信你试试!

    如果将@改为

    string code="<div onclick='add('a','b');' >中国</div>";//正确吧!

    ‘中国’是显示了,但add('a','b')死活是不调用,为什么呢?因为onclick方法必须用双引号括起来,

    你会说那用说双引号不就完了吗,问题又回到了@处,'中国'压根不显示了。

    原因到底在何处?调试 Handler.ashx,发现它显示
    document.write("
    中国
    ");
    查看源码发现:
    document.write("<div onclick="add('a','b');">中国</div>");
    错误终于露出马脚了,双引号已经把document.write事件划成两半了,这怎么能显示出'中国'呢?
     
    那这种问题怎么处理呢?知道错误的原因就简单了,把@改为:
    string code="<div onclick=\\\"add('a','b');\\\" >中国</div>";//这才是最正确的!!

    总结:对于转义字符的使用应该多留心,虽然在当前页面上是正确的,但不能保证在多次套用后还是正确的,具体情况具体分析,这只是我做项目碰见的一个有趣的现象,我就把它记下来和大家分享下!

  • 版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
  • 捐款支持:
查看全文
  • 相关阅读:
    下载并安装chrome插件的方法
    QString转化为char *的方式
    a socket demo
    TCP/IP相关知识总结(马士兵教育)视频对应图片
    C++中的按位或的用意
    dll路径加载顺序
    【第二周】【作业七】四人小组项目
    【第二周】【作业六】结对项目,四则运算++
    【第二周】【作业八】个人项目词频统计++
    【第二周】【作业三】效能测试
  • 原文地址:https://www.cnblogs.com/liuguozhu2015/p/2620178.html
  • Copyright © 2011-2022 走看看