12

我在转义hrefs JavaScript 函数中的单引号和双引号时遇到问题。

我有这个 JavaScript 代码里面href。就像是 -

<a href = "javascript:myFunc("fileDir/fileName.doc", true)"> click this </a>

现在,由于双引号内的双引号无效,我需要转义内部双引号以将其视为字符串的一部分 - 所以,我需要这样做 -

<a href = "javascript:myFunc(\"fileDir/fileName.doc\" , true)"> click this </a>

问题是,即使上面的代码也不起作用。JavaScript 代码在以下位置被截断—— myFunc(

我也尝试使用单引号变体 - 但即使这样似乎也不起作用(这意味着如果我的字符串文字中有单引号,那么代码会被截断)。

这就是我用单引号所做的:

<a href = 'javascript:myFunc("fileDir/fileName.doc" , true)'> click this </a>

这可行,但如果我在字符串中有一个单引号,那么代码会以与双引号相同的方式被截断。

4

4 回答 4

34

使用反斜杠来转义引号是它在 JavaScript 中的工作方式,但您实际上并没有在那里编写 JavaScript 代码:您正在编写 HTML。您可以使用 HTML 转义方法来做到这一点:字符实体。

&quot;  // "
&#39;   // '

例如:

<a href="javascript: alert('John O&#39;Brien says &quot;Hi!&quot');">...</a>
于 2009-03-06T07:01:15.107 回答
1

作为一般的最佳实践,在 HTML 中使用双引号,在 JavaScript 中使用单引号。这将解决你的大部分问题。如果您需要 JavaScript 字符串中的单引号,您可以使用 \' 对其进行转义 - 而且您可能不应该将文字字符串嵌套得比这更深。

如其他地方所述,如果代码嵌入在 HTML 中,则 HTML 实体是可能的。但是您仍然需要处理 JavaScript 源文件中字符串中的转义引号,因此最好使用一致的策略来处理 JavaScript。

如果您遵循此策略并最终在 HTML 中嵌入 JavaScript 中嵌入双引号,则只需使用 HTML 实体 "。

于 2011-05-28T03:06:06.367 回答
1

如果有人需要逃避这样的事情:

<a href="www.google.com/search?q="how+to+escape+quotes+in+href""</a>

您可以对双引号使用 ASCII 代码%22

<a href="www.google.com/search?q=%22how+to+escape+quotes+in+href%22"</a>

如果您从 PHP 传递到 JavaScript 的链接,这将特别有用

于 2017-08-30T12:46:13.980 回答
-1

通常,这种代码可以正常工作:

<a href="#" onclick="myFunc('...')">Click this</a>

有了这段代码,你有什么问题吗?

于 2009-03-06T07:01:47.523 回答