我想知道如何保持通过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 &#039;-->
<a href="javascript: callFunction('Robin&#039;s Text')">Robin&#039;s Text</a> 

<br />
<br />

<!--And this will not work due to &#034;-->
<a href='javascript: callFunction("Robin&#034;s Text")'>Robin&#034;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>

===============>>#1 票数:0

谢谢大家的建议。 有了它,我找到了一个可行的解决方案。 似乎同时使用反斜杠和HTML特殊字符将使其正常工作。 我不确定为什么两者都需要?

<!--Using HTML Special Characters (&#039;) alone will not work-->
<a href="#" onClick="callFunction('Robin&#039;s Text')">Robin&#039;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\&#034;s Text')">Robin"s Text</a>

===============>>#2 票数:-1

假设JS函数的输入将由机器生成,那么您应该从服务器转义输入,然后在客户端取消转义,如下所示:

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));
}

请参阅以下工作代码:

JSFiddle

  ask by user3555223 translate from so

未解决问题?本站智能推荐: