编程语言
首页 > 编程语言> > 为什么javascript协议会自动解码URL?

为什么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