2009-03-06 119 views
9

我在跳過href的JavaScript函數中的單引號和雙引號時遇到了問題。對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> 

這工作,但如果我有字符串,則代碼被以同樣的方式爲雙引號一截斷內一個單引號。

回答

28

使用反斜槓來轉義引號是它在JavaScript中的工作原理,但實際上並未在其中編寫JavaScript代碼:您正在編寫HTML。你可以通過使用HTML轉義方法來實現:字符實體。

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

例如:

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

我認爲你仍然需要逃避',因爲一旦解析了html,實體的值將被擴展爲'就像另一個原罪在屬性裏面引用gle。它應該是'警惕'('約翰O \ '布里恩說"');` – JeremyWeir 2012-12-01 22:59:18

-1

通常情況下,這種代碼工作沒有問題:

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

有了這個代碼,你有什麼問題嗎?

+0

是的,他說他的文本可能包含引號(單雙) – nickf 2009-03-06 07:05:01

1

作爲一般的最佳實踐,在HTML中使用雙引號和在JavaScript中使用單引號。這將解決你的大部分問題。如果您需要在JavaScript字符串中使用單引號,則可以使用\'來轉義它 - 並且您可能不應該將字符串嵌入更深處。

正如其他地方所指出的,如果代碼嵌入到HTML中,HTML實體是一種可能性。但是,您仍然必須處理JavaScript源文件中的字符串轉義引號,所以最好只有處理JavaScript的一致策略。

如果您遵循此策略,並且嵌入HTML中嵌入的雙引號結尾,則只需使用HTML實體&「。

0

如果有人需要逃避一些事情是這樣的:

<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> 

如果您通過鏈接的JavaScript這是特別有用來自PHP