在javascript中避免url中的特殊字符

时间:2013-08-27 11:36:21

标签: javascript asp.net special-characters

我有一个树视图,即动态添加节点并在每个节点上添加javscript点击功能..这里thisFileNode.Value有url值,避免了url中的spl charcters我在我的代码中使用了escape函数..仍然无法正常工作。 。 请有人帮帮我吗

我不熟悉逃避,它究竟做了什么?以及如何处理这个问题?

   thisFileNode.NavigateUrl = "javascript:clickNode(this, escape('" + thisFileNode.Value + "'));"

如果url中的任何spl字符应该删除,我怎样才能获得有效的url ??

3 个答案:

答案 0 :(得分:0)

使用HttpUtility.JavaScriptStringEncode:

      thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + 
        HttpUtility.JavaScriptStringEncode(thisFileNode.Value) + "');"

答案 1 :(得分:0)

或者,您可以手动转义特殊字符:

thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + HtmlEscape(thisFileNode.Value) + "');"

HtmlEscape方法:

public static string HtmlEscape(string str)
    {
        return str
        .Replace("&", "&")
        .Replace("\"", """)
        .Replace("'", "'")
        .Replace("<", "&lt;")
        .Replace(">", "&gt;");
    }
}

答案 2 :(得分:0)

在javascript中,您可以使用encodeURI(str)对您的网址进行编码,或使用encodeURIComponent(str)对其中的一部分进行编码(例如作为组件提供的网址)。更多解释here

使用decodeURI(str)decodeURIComponent(str)获取原始字符串。

这就是这些方法将url中禁止的特殊字符替换为&成为&amp;的转义字符串。

thisFileNode.NavigateUrl = 
    "javascript:clickNode(this, decodeURI('" + thisFileNode.Value + "'));"

注意:如果thisFileNode.Value是网址或打算插入网址,则这是相关的。

你可能还需要(或者代之以)逃避引用等等,这可能会被javascript本身误解。我不是.Net专家,但是HttpUtility.JavaScriptStringEncode应该做的。您不需要解码字符串,因为它可以精确地允许您设置javascript字符串。