javascript-Javascript, html特殊字符问题:当这个@Name里有单引号,或者双引号,IE上现在在报错,怎么让他不报错

问题描述

Javascript, html特殊字符问题:当这个@Name里有单引号,或者双引号,IE上现在在报错,怎么让他不报错

Javascript, html特殊字符问题:当这个@Name里有单引号,或者双引号,IE上现在在报错,怎么让他不报错
比如
test'test

test"test
注意:若我输入普通的字符串,它能正常工作。

 <?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <table cellpadding="0" cellspacing="0" class="LineItem">
      <xsl:for-each select="//Cluster">
        <xsl:sort select="@Name" order="ascending" data-type="text" />
        <tr>
          <td width="20" nowrap="true">
            <img src="../images/spacer.gif" />
            <img src="../images/cluster.gif" />
          </td>
          <td class="headerCell"  width="100%" onclick="SelectSurveyItem('{@ClusterId}','{@Name}')">
            <div class="pseudoLink">
              <xsl:value-of select="@Name" />
            </div>
          </td>
        </tr>
        <tr>
          <td colspan="4" class="break"></td>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>

Maybe I'm just thinking about this too hard, but I'm having a problem figuring out what escaping to use on a string in some JavaScript code inside a link's onClick handler. Example:

 <td class="headerCell"  width="100%" onclick="SelectSurveyItem('{@ClusterId}','{@Name}')">
            <div class="pseudoLink">
              <xsl:value-of select="@Name" />
            </div>
          </td>

The '{@Name}' where template substitution occurs. My problem is that the item name can contain any character, including single and double quotes. Currently, if it contains single quotes it breaks the JavaScript code.

My first thought was to use the template language's function to JavaScript-escape the item name, which just escapes the quotes. That will not fix the case of the string containing double quotes which breaks the HTML of the link. How is this problem normally addressed? Do I need to HTML-escape the entire onClick handler?

If so, that would look really strange since the template language's escape function for that would also HTMLify the parentheses, quotes, and semicolons...

This link is being generated for every result in a search results page, so creating a separate method inside a JavaScript tag is not possible, because I'd need to generate one per result.

Also, I'm using a templating engine that was home-grown at the company I work for, so toolkit-specific solutions will be of no use to me.
http://stackoverflow.com/questions/97578/how-do-i-escape-a-string-inside-javascript-code-inside-an-onclick-handler

这个英文版的问题差不多就是我的问题,但是我不知道如何破?

解决方案

在进行页面load时,就把test'test之类的变量判断是否有',若有,就用&pros;替换。这样就KO了。

解决方案二:

到底是报错还属不报错。

 {@Name}

这个是什么js模板还是服务器模板?如果是模板,实际上在运行的时候dom已经被替换为实际的name的值了。不存在你说的问题。
至于引号转义,这个你可以用htmlencode编码下。

解决方案三:

那你想要表达什么呢,

解决方案四:

怎么整?我不是很明白js膜拜还是服务器模板。 怎么用htmlencode? 能具体点吗?我没怎么整过javascript.谢谢

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <table cellpadding="0" cellspacing="0" class="LineItem">
      <xsl:for-each select="//Cluster">
        <xsl:sort select="@Name" order="ascending" data-type="text" />
        <tr>
          <td width="20" nowrap="true">
            <img src="../images/spacer.gif" />
            <img src="../images/cluster.gif" />
          </td>
          <td class="headerCell"  width="100%" onclick="alert('{@Name}')">
            <div class="pseudoLink">
              <xsl:value-of select="@Name" />
            </div>
          </td>
        </tr>
        <tr>
          <td colspan="4" class="break"></td>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>

解决方案五:

onclick="alert('{@Name}')"换成onclick="alert('test"test')"报错吗?
估计也是报错的,应该是不能有‘,“吧,非要有的话那就先转换成其他字符,然后再转回来

解决方案六:

onclick="alert('test"test')"这个不报错。 这个onclick="alert('test'test')"报错。怎么解决?

解决方案七:

使用转义',比如onclick="alert('test'test')"

解决方案八:

the 'test'test'来自于
这个是用户填的,我并不知道用户何时填什么字符。这个用javascript怎么出来呢。

时间: 2024-11-05 17:33:14

javascript-Javascript, html特殊字符问题:当这个@Name里有单引号,或者双引号,IE上现在在报错,怎么让他不报错的相关文章

JavaScript中的单引号和双引号报错的解决方法_javascript技巧

在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解决. 例如: Alert("this is test "message"!"); Alert('this is test 'message'!'); 一般会改成以下语句 Alert("this is test /"message/"!&qu

基于javascript如何传递特殊字符_javascript技巧

在没步入正轨之前,先给大家介绍JavaScript 特殊字符 你可以在 JavaScript 中使用反斜杠来向文本字符串添加特殊字符. 插入特殊字符 反斜杠用来在文本字符串中插入省略号.换行符.引号和其他特殊字符. 请看下面的 JavaScript 代码: var txt="We are the so-called "Vikings" from the north." document.write(txt) 在 JavaScript 中,字符串使用单引号或者双引号来

关于在JavaScript中使用EL表达式的问题,到底用不用加单引号或者双引号或者不加?

问题描述 关于在JavaScript中使用EL表达式的问题,到底用不用加单引号或者双引号或者不加? 之前我自己编辑百度地图api时候,EL表达式是直接写的,但是并不能使用. 当时我在csdn上找到了如下这篇文章,说是要加引号.http://blog.csdn.net/xuechongyang/article/details/8629473然后就成功了. 比如下代码的最后一句. <script type=""text/javascript""> // 百度

java和javascript双引号嵌套的问题

双引号不能嵌套双引号,否则一对双引号就结束了 java中双引号中嵌套双引号需要转义: public class Test{            public static void main(String[] args){            String str1 = "\"name\"";//字符串两边含有双引号             String str2 = "name \"is\" wgb";//字符串中间含有

javascript单引号和双引号的区别和处理_基础知识

单引号和双引号其实没啥区别,看你自己习惯了 复制代码 代码如下: <input type="button" onclick="alert("1")">-------------------不正确 <input type="button" onclick="alert('1')">-------------------正确 双引号中再用双引号要这样: var str = "a

javascript 复杂的嵌套环境中输出单引号和双引号_javascript技巧

<a href="javascript:alert('这里有2个单引号一个双引号"\'\' :)');" >引号的嵌套</a> 单引号 ' 的 ASCII码是 39 双引号 " 的 ASCII码是34,所以我们可以用xx;的形式来代替具体的符号.虽然变成了xx;的形式,但是在嵌套环境中仍然要很当心.这里代码里的alert()使用的引号是单引号,alert里的字符串应该转义掉单引号.于是就有了 \'的形式.反之,就要转义掉 \"

JavaScript 限制文本框不可输入英文单双引号的方法_javascript技巧

<input id="workname" style="width: 200px" name="workname" value="" type="text" onkeyup="JavaScript:replaceLikeVal(this)" /> 正则实现replaceAll: function replaceLikeVal(comp){ if (comp.value.ind

PHP json字符串对特殊字符处理(单引号,双引号)

PHP json字符串对特殊字符处理(单引号,双引号)

两种方法解决javascript url post 特殊字符转义 + &amp; #_jquery

最近在用url 传特殊字符的时候发现数据丢失了. 其实不是丢失,比如 '+'它会当成连接字符来处理了. 一.替换成16进制字符,在这列几个常用的转换 + 空格 / ? % & = # %2B %20 %2F %3F %25 %26 &3D %23 复制代码 代码如下: var post_Str = apply_name.replace(/\+/g, "%2B");//"+"转义   var post_Str= post_Str.replace(/\&