防止HTML实体的转换

时间:2010-07-06 14:10:47

标签: javascript escaping

我有一个javascript函数,它以字符串作为参数。这个字符串是编码的(%20表示空格,%26表示&符号等。)。

function myFunction(theParam) {
       alert(theParam); // outputs &
}

// called by the following link
<a href="#" onclick='myFunction("%26")'>Do something</a>

如何阻止此行为?我希望myFunction接收%26作为参数而不是&符号......

1 个答案:

答案 0 :(得分:1)

您的示例会按预期警告%26。 (然后转到导航到#。请记住点击处理程序中的return false以停止跟踪链接。)

如果您使用javascript:链接

<a href="javascript:myFunction('%26')">Do something</a>

因为javascript:网址仍然是网址,并且会遵循正常的网址转义规则。当然,您绝不应该使用javascript:网址。

更好,从JavaScript本身分配,因此您不必担心HTML转义问题:

<a href="#" id="somethingdoer">Do something</a>

document.getElementById('somethingdoer').onclick= function() {
    myFunction('%26');
    return false;
};