我想知道如何保持在文本中使用callFunction()传递给JavaScript函数的单引号和双引号的能力?下面的所有三个案例似乎都失败了。
混合单引号和双引号将起作用,但我希望能够在我的文本块中使用单引号和双引号。很奇怪为什么浏览器在将html特殊字符传递给Javascript函数之前会对其进行评估。
谢谢,罗宾
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
function callFunction(text){
alert(text);
}
</script>
</head>
<body>
<!--This will not work due to '-->
<a href="javascript: callFunction('Robin's Text')">Robin's Text</a>
<br />
<br />
<!--And this will not work due to "-->
<a href='javascript: callFunction("Robin"s Text")'>Robin"s Text</a>
<br />
<br />
<!--Trying with a slash but not working either-->
<a href='javascript: callFunction("Robin\'s Text")'>Robin's Text</a>
</body>
</html>
答案 0 :(得分:0)
谢谢大家的建议。有了它,我找到了一个可行的解决方案。似乎同时使用反斜杠和HTML特殊字符可以使它工作。我不确定为什么两者都需要?
<!--Using HTML Special Characters (') alone will not work-->
<a href="#" onClick="callFunction('Robin's Text')">Robin's Text</a>
<br />
<br />
<!--Using backslash (\) alone will not work-->
<a href="javascript: callFunction('Robin\"s Text')">Robin"s Text</a>
<br />
<br />
<!--But using a combination of both will work!-->
<a href="javascript: callFunction('Robin\"s Text')">Robin"s Text</a>
答案 1 :(得分:-1)
假设JS函数的输入是机器生成的,那么你应该从服务器中转义输入,然后在客户端对其进行unescape,如下所示:
HTML:
<a href="#" onclick='callFunction("Robin%27s%20Text")'>Robin's Text</a>
<br>
<a href="#" onclick='callFunction("Robin%22s%20Text")'>Robin"s Text</a>
JS:
function callFunction(text){
alert(decodeURIComponent(text));
}
请参阅以下工作代码: