fyifei0558 2015-07-08 11:01 采纳率: 100%
浏览 1916
已采纳

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

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

  • 写回答

8条回答 默认 最新

  • fyifei0558 2015-07-16 02:49
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度