2013-07-16 151 views
0

嗨我正在使用從錨鏈接調用的JavaScript函數,它傳遞一個具有特殊字符的標題,請告訴我如何轉義傳遞給該函數的字符串中的單引號。Javascript特殊轉義字符

樣品字符串如下,

string desc="test's/test2'w"; 

樣品鏈接HTML

"<a href="javascript:getdata(\'' + desc+ '\',);void(0);">TEST</a>" 

所以函數getdata不叫,因爲它不是轉義該字符。

其遺留系統,我需要與HTML僅

+0

我假設Html是在一個JavaScript字符串? –

+0

沒有它與js函數調用的href動作的錨鏈接 – Selwyn

回答

0

工作,如果你不知道所有的HTML 實體的名字,你仍然可以HTML編碼他們

function htmlEncode(str) { 
    return str.replace(/[^\da-z()\[\] .,\/\\]/g, function (m) { 
     return '&#' + m.charCodeAt(0) + ';'; 
    }); 
} 
htmlEncode("test's/test2'w"); // "test&#39;s/test2&#39;w" 

其中\da-z()\[\] .,\/\\是允許字符的白名單。

如果你想生成HTML作爲字符串,這是正常的,但如果你想結交新DOM元素Quentinanswer是從長遠來看要好得多。

4

不要通過粉碎字符串來生成HTML,請使用DOM。不要使用JavaScript URI,請使用事件處理程序。

var desc = "test's/test2'w"; 
var link = document.createElement('a'); 
link.appendChild(document.createTextNode('TEST')); 
link.href = "fallback.html"; 
link.addEventListener('click', function (evt) { 
    getData(desc); 
    evt.preventDefault(); 
}); 
document.body.appendChild(link); 
+0

謝謝!最後有人反對js中的html糾結。 – Zirak