• 思考:转义字符\的有趣现象


    使用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
  • 捐款支持:
  • 相关阅读:
    xml的servlet配置
    python Matplotlib 系列教程(三)——绘制直方图和条形图
    https://blog.csdn.net/blmoistawinde/article/details/84329103
    机器学习——标准化/归一化的目的、作用和场景
    梯度提升决策树(GBDT)与XGBoost、LightGBM
    最容易理解的对卷积(convolution)的解释
    如何通俗易懂地解释卷积?
    卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解
    Conv1D和Conv2D的区别
    卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)
  • 原文地址:https://www.cnblogs.com/liuguozhu2015/p/2620178.html
  • Copyright © 2020-2023  润新知