为什么javascript协议会自动解码URL?
作者:互联网
我对JavaScript协议为何解码编码的URL感到困惑,例如:
<a href="javascript:myFunction('%3DcDO4w67epn64o76');">press</a>
function myFunction(id)
{
alert(id); //it will generate =cDO4w67epn64o76
}
我在加密和解密中使用这些字符串.
请提供给我一个真正的原因和解决方案(原因对我来说非常重要),我知道我可以替换(=)符号,但是我担心其余的编码字符串也将被包装程序解码.
注意:在php中,GET,REQUEST全局变量将自动解码url.
解决方法:
因为它在href属性中(可以预料到URL),所以浏览器正在“规范化”“ URL”的URI编码(正在使用javascript伪方案).
您可以将其放在其他属性中,然后得到它,如下所示:
function myFunction(element) {
console.log(element.getAttribute("data-value")); //it will generate =cDO4w67epn64o76
}
<a href="javascript:;" onclick="myFunction(this)" data-value="%3DcDO4w67epn64o76">press</a>
…尽管我不鼓励使用onclick =“ …”处理程序.代替:
function linkHandler(e) {
console.log(this.getAttribute("data-value"));
e.preventDefault();
}
var links = document.querySelectorAll("a[data-value]");
Array.prototype.forEach.call(
links,
function(link) {
link.addEventListener("click", linkHandler, false);
}
);
<a href="javascript:;" data-value="%3DcDO4w67epn64o76">press</a>
标签:urldecode,urlencode,javascript,php 来源: https://codeday.me/bug/20191026/1936397.html