如何绕过动态锚标记中的特殊字符

时间:2015-02-27 12:32:28

标签: javascript jquery html

我正在尝试通过添加一些值来创建动态锚标记。但是在特殊字符的情况下,代码正在破坏:

'<a href="#" onclick="openCI(\''+var1+'\',\''+ var2 +'\',\''+ var3 +'\',\''+ var4 +'\')">' + LINK_URL + '</a>'

在上述情况下,当LINK_URL值包含特殊字符时,代码会中断。有什么方法可以解决这个问题吗?

我在LINK_URL中尝试了以下值:!@#$%^&amp; *() - = + _&#39 ;;&#34;:。,&lt;&gt; /?

如果我在javascript中使用escape()函数,则显示的值与实际值不匹配:%21 @%23%24%25%5E%26 *%28%29-%3D + _%27 %3B%3A%2C%3C%3E /%3F

如何解析此值并按原样显示?

2 个答案:

答案 0 :(得分:1)

您只需要担心<>&"个字符。您可以将这些字符替换为等效的html。

LINK_URL.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");

或者你可以用更优雅的方式做到:

String.prototype.htmlEscape = function() {
   return this.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
}

LINK_URL.htmlEscape();

这是working example

答案 1 :(得分:0)

只需将您的href元素或变量作为字符串推送到数组中,就像这样

var arr=[];

arr.push('"');
arr.push("@");
arr.push("$");
arr.push("%");
arr.push('"');
console.log(arr.join(""));

然后在您的标记

中附加数组arr

此处的示例http://jsfiddle.net/Lz760k2j/1/