对href使用JavaScript单引号和双引号

时间:2009-03-06 06:57:50

标签: javascript escaping

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

我在href中有这个JavaScript代码。就像 -

<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 个答案:

答案 0 :(得分:29)

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

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

例如:

<a href="javascript: alert('John O&#39;Brien says &quot;Hi!&quot');">...</a>

答案 1 :(得分:1)

作为一般的最佳做法,请在HTML中使用双引号,在JavaScript中使用单引号。这将解决您的大多数问题。如果你需要一个JavaScript字符串中的单引号,你可以使用\'来逃避它 - 你可能不应该将文字字符串嵌套得更深。

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

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

答案 2 :(得分:0)

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

%22

您可以将ASCII代码用于双引号<a href="www.google.com/search?q=%22how+to+escape+quotes+in+href%22"</a>

{{1}}

如果您从PHP传递链接到JavaScript

,它会特别有用

答案 3 :(得分:-1)

通常,这种代码没有问题:

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

使用此代码,您有任何问题吗?