将撇号传递给javascript函数

时间:2011-11-29 19:39:12

标签: javascript html jsp

我没有在JSP中使用JavaScript(以利用localStorage)找到解决方案。

试图传递撇号的东西。我已完成.replaceAll()并将'替换为',但仍将其作为'传递。

我也尝试过.split(“'”)并用撇号取代了撇号:

(\' , ' , \', '' , ''' and  '\'')

所有这些只是将撇号传递给函数(当我将鼠标悬停在链接上时看到的内容),如下所示:

<a href="saveJob('<%=id%>','<%=title%>','<%=a%>' + '\'' + '<%=b%>','<%=date%>')">Save job</a>

ab是两个拆分子字符串但没有效果。我注意到空格被转换为%20,但这不太舒服。还有其他想法吗?

3 个答案:

答案 0 :(得分:5)

  1. 您的JSP代码无关紧要。决定要生成哪些HTML并生成它。
  2. 以下是所有有效的HTML标记:

    <a href="saveJob('Bob\'s Question')"> …
    <a href="saveJob(&quot;Bob&apos;s Question&quot;)"> …
    <a href="saveJob('He said &quot;Go Away&quot;')"> …
    <a href='saveJob("He said \"Go Away\"")"> …
    

    ...以下无效

    <a href="saveJob('Bob's Question')">       <!-- JS string ends early      -->
    <a href="saveJob("Bob's Question")">       <!-- HTML attribute ends early -->
    <a href="saveJob('Bob&apos;s Question')">  <!-- JS string ends early      -->
    <a href="saveJob('He said "Go Away"')">    <!-- HTML attribute ends early -->
    

    除了作为HTML实体之外,您不能在属性值中使用HTML属性定界符。您不能在JavaScript字符串中使用JavaScript字符串分隔符,除非您将其转义,即使您使用HTML实体来描述它

  3. 一般情况下,你不应该在你的HTML 中放置JavaScript(你应该以编程方式从脚本中将事件处理程序附加到你的标记),你尤其不应该滥用HTML锚点作为JavaScript触发器(使用HTML锚点到有效的URL并让JavaScript在启用时劫持链接,或者使用<button>或其他元素来调用仅脚本的副作用)

答案 1 :(得分:1)

正如您所注意到的,这样的手动字符串转义任务可能非常棘手;覆盖撇号甚至不会让你一路走来:如果字符串中有换行符怎么办?这也会破坏剧本。

我建议您使用JSON-taglib将数据转换为JSON对象。这应该照顾所有必要的逃脱。

答案 2 :(得分:1)

Phrogz解决方案

<a href="saveJob(&quot;Bob&apos;s Question&quot;)">
如果你的文字中只有撇号,

可以正常工作。 如果您的文本包含撇号和引号,则可以对文本使用隐藏的div(div使用style ='display:none;'),将div的id传递给saveJob而不是传递文本本身,并获取文本使用

在saveJob里面
document.getElementById(myId).innerHTML