html转义

借用一下此博主的blog

http://blog.163.com/zhaoyanping_1125/blog/static/201329153201111292515775/

在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:
<input value="Test" type="button" onclick="alert(""OK"");" />
IE提示出错后,再漫不经心地改为:
<input value="Test" type="button" onclick="alert(\"OK\");" />
结果还是出错。
这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:
<input value="" type="button" onclick="alert(‘OK‘);" />
但为什么javascript中的转义字符\没有效果了呢?

后来找到一段正常的代码:
<input value="Test" type="button" onclick="alert(&quot;OK&quot;);" />
这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。

两个双引号的做法是vbScript的,\"这种做法则是javascript的,而HTML的,则是用&quot;,

在最终渲染成html的时候,想显示",要变成&quot这种形式.比如以下这段代码

 var inputTpl = inputTplPre
        +  ‘<div class="mess-item-ex" id="mess-item-wrap-#num" >‘
            +  ‘<div class="mess-item-ex-inputs">‘
            +  ‘    <span data-ui="type:TextBox;id:mess-txt-#num;value:#key;maxLength:10"  ></span>‘
            +  ‘  <input class="mess-item-ex-cbk" type="checkbox" #necessity id="mess-cbk-#num" />‘
            +  ‘   <label for="mess-cbk-#num">必填</label>‘
            +  ‘</div>‘
            +  ‘<div class="mic-space">‘
            +  ‘    <a hidefocus="true" href="javascript:;" data-type="mics-down" class="mics cdown">xia</a>‘
            +  ‘    <a hidefocus="true" href="javascript:;" data-type="mics-up" class="mics cup" id="mics-up-#num">shang</a>‘
            +  ‘    <a hidefocus="true" href="javascript:;" data-type="mics-del" class="mics cdel" id="mics-del-#num">del</a>‘
            +  ‘</div>‘
        +  ‘</div>‘
        +  ‘</div>‘;

  陷阱1:在js时候,已经使用‘来表示字符串,以防止和”冲突。

  如果用“表示字符串,就该表示成

<span data-ui=\"type:TextBox;id:mess-txt-#num;value:#key;maxLength:10\"  ></span>"

  陷阱2:在解析#key时,需对#key进行编码

  如果不编码,#key解析 nihao 还是对的,但解析   "nihao"   的时候,字符串就会变成这样

‘    <span data-ui="type:TextBox;id:mess-txt-#num;value:"nihao";maxLength:10"  ></span>‘

  等于type前引号和value后引号成一对了。

  所以,要对#key进行encodeHtml,再替换进字符串中。即 #key == "nihao" -> &quot你好&quot

  替换后的字符串变成

‘    <span data-ui="type:TextBox;id:mess-txt-#num;value:&quot;nihao&quot;;maxLength:10"  ></span>‘

  这样解析出来的时候就对了。

  直观地附一张编解码的图

  

时间: 2024-08-07 00:17:02

html转义的相关文章

避免shell脚本SQL语句中 *输出时转义

脚本test.sh内容如下,在 /home/myname/下执行该脚本, 家目录下有文件a.txt,test.log,test.sh #!/bin/bash sql="select * from emp;" echo $sql echo $sql > test.log 执行后结果: select test.sh a.txt test.log from emp; 如何能让sql中的*不转义? 修改为如下: #!/bin/bashsql="select * from emp

Backbone 模板 underscore template默认的转义符&lt;%= %&gt; 与jsp的冲

先定义转义符,因为默认的转义符<%= %> 与jsp的冲突(如果js模板写在jsp页面中)       _.templateSettings = { interpolate : /\{\{(.+?)\}\}/g }; 下面就可以这样写 <script type="text/template" id="detailedBar-template"> <div class='title'> <span class='label'&

利用js将图片地址进行转义

在业务中经常需要将图片从后台获取,然后在前台显示.其中后台存取图片主要分为两种,一种是数据库中获取图片的地址,第二种是存取图片内容的信息.这次主要是前台代码处理第一种情况.数据库存取的是地址,然后根据前台规则,将图片所在的地址进行转义. 主要代码如下: 1 function test(){ 2 var x = "img/2.jpg"; 3 var arr = x.split(""); 4 for(var i=0;i<arr.length;i++){ 5 if(

javascript对HTML的特殊字符的转义与反转义

有时候,我们所查询得到的数据包含有HTML的标签,当我们不希望浏览器解析该标签的时候,我们可以对">""<"进行转义,下面来介绍,"<"">"如何与">""<"进行转义和反转义. //HTML转义  function HTMLEncode(html) {         var temp = document.createElement ("

转义符

前段时间学的知识,为免忘记,一点点整理. 转义符 代表的意义 \" 双引号 \' 单引号 \n 换行符 \t 制表符(相当于按下了Tab键) \\ 斜杠\ 在代码中书写一个斜杠(\)用于改变\后出现字符的意义. " " 代表字符串的开始和结束. \" 普通的双引号字符. 例: Tom said:" Hello !" Console.Write("Tom said :\"Hello!\" ") \t 制表符 例: 你 好 (相当于按下了Tab键) Console.Writeli

【python】正则表达式中的转义问题

encode('string-escape') 解决 比如想匹配'\x0e\x0a'中的'\x'后的内容,这里希望把'\x0e'作为一个字符串,那么其中的\应该被转义. 未加转义的正则: p = '(?<=\x)[0-9A-Za-z]{2}' 直接这样写会报错,需要给\转义,于是变为 p = '(?<=\\x)[0-9A-Za-z]{2}' 但由于使用的时候,会先将p的内容转义,然后匹配,所以又变成了\x和原始数据匹配,又会出错.解决: p = '(?<=\\x)[0-9A-Za-z]{

php 自带的过滤函数和转义函数

函数名 释义 介绍 htmlspecialchars 将与.单双引号.大于和小于号化成HTML格式 &转成&"转成"' 转成'<转成<>转成> htmlentities() 所有字符都转成HTML格式 除上面htmlspecialchars字符外,还包括双字节字符显示成编码等. addslashes 单双引号.反斜线及NULL加上反斜线转义 被改的字符包括单引号 (').双引号(").反斜线 backslash (\) 以及空字符NUL

DotNet的字符转义操作

在项目中使用到字符的转义,现在提供一种字符转义和反转义的操作方法: 1.转义符操作:         /// <summary>         /// 转义符操作         /// </summary>         /// <param name="s"></param>         /// <param name="charToEliminate"></param>      

phalcon: 上下文转义

Phalcon\Escaper 转义特殊的字符 一:字符转义 $maliciousTitle = '</title><script>alert(1)</script>'; $e = new Phalcon\Escaper(); echo $e->escapeHtml($maliciousTitle) 最不安全的情形即是在html标签中插入非安全的数据 我们可以使用escapeHtml方法对这些文本进行转义: $e->escapeHtml('></

基于MVC+EasyUI的Web开发框架经验总结(9)--在Datagrid里面实现外键字段的转义操作

我们在使用EasyUI的时候,很多情况下需要使用到表格控件datagrid,这个控件控件非常强大,使用起来很简洁,但是我在使用中,发现对于一个表里面的外键字段进行转义,并显示引用表的一些名称的操作,却显得比较难以实现,找了很多资料,基本上没有找到对应的解决方案.本文主要介绍我对这种外键字段转义的操作的实现方式,以便供大家参考了解. 1.DataGrid的初始化操作 在了解对内容的解析前,我们先来了解EasyUI里面Datagrid的初始化操作过程,然后逐步进行分析,寻求解决方式. 一般情况下,D