2013-07-16 2 views
0

Привет Я использую функцию JavaScript, которая вызывается из привязки, которая передает заголовок, который имеет специальный символ. Не могли бы вы рассказать мне, как я могу избежать одиночной кавычки в строке, переданной функции.Специальные символы escaping 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 action – 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 элементов, Quentin «s answer намного лучше в долгосрочной перспективе.

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

Спасибо! Наконец, кто-то, кто против запутывания html в js. – Zirak