我没有在JSP中使用JavaScript(以利用localStorage)找到解决方案。
试图传递撇号的东西。我已完成.replaceAll()
并将'
替换为'
,但仍将其作为'
传递。
我也尝试过.split(“'”)并用撇号取代了撇号:
(\' , ' , \', '' , ''' and '\'')
所有这些只是将撇号传递给函数(当我将鼠标悬停在链接上时看到的内容),如下所示:
<a href="saveJob('<%=id%>','<%=title%>','<%=a%>' + '\'' + '<%=b%>','<%=date%>')">Save job</a>
a
和b
是两个拆分子字符串但没有效果。我注意到空格被转换为%20,但这不太舒服。还有其他想法吗?
答案 0 :(得分:5)
以下是所有有效的HTML标记:
<a href="saveJob('Bob\'s Question')"> …
<a href="saveJob("Bob's Question")"> …
<a href="saveJob('He said "Go Away"')"> …
<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's Question')"> <!-- JS string ends early -->
<a href="saveJob('He said "Go Away"')"> <!-- HTML attribute ends early -->
除了作为HTML实体之外,您不能在属性值中使用HTML属性定界符。您不能在JavaScript字符串中使用JavaScript字符串分隔符,除非您将其转义,即使您使用HTML实体来描述它。
一般情况下,你不应该在你的HTML 中放置JavaScript(你应该以编程方式从脚本中将事件处理程序附加到你的标记),你尤其不应该滥用HTML锚点作为JavaScript触发器(使用HTML锚点到有效的URL并让JavaScript在启用时劫持链接,或者使用<button>
或其他元素来调用仅脚本的副作用)
答案 1 :(得分:1)
正如您所注意到的,这样的手动字符串转义任务可能非常棘手;覆盖撇号甚至不会让你一路走来:如果字符串中有换行符怎么办?这也会破坏剧本。
我建议您使用JSON-taglib将数据转换为JSON对象。这应该照顾所有必要的逃脱。
答案 2 :(得分:1)
Phrogz解决方案
<a href="saveJob("Bob's Question")">
如果你的文字中只有撇号,可以正常工作。 如果您的文本包含撇号和引号,则可以对文本使用隐藏的div(div使用style ='display:none;'),将div的id传递给saveJob而不是传递文本本身,并获取文本使用
在saveJob里面document.getElementById(myId).innerHTML