Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么javascript协议会自动解码URL?_Javascript_Php_Urlencode_Urldecode - Fatal编程技术网

为什么javascript协议会自动解码URL?

为什么javascript协议会自动解码URL?,javascript,php,urlencode,urldecode,Javascript,Php,Urlencode,Urldecode,我不明白为什么javascript协议会解码编码的URL,例如: <a href="javascript:myFunction('%3DcDO4w67epn64o76');">press</a> function myFunction(id) { alert(id); //it will generate =cDO4w67epn64o76 } 函数myFunction(id) { 警报(id);//它将生成=cDO4w

我不明白为什么javascript协议会解码编码的URL,例如:

    <a href="javascript:myFunction('%3DcDO4w67epn64o76');">press</a> 
    function myFunction(id)
    {
        alert(id); //it will generate =cDO4w67epn64o76
    }

函数myFunction(id)
{
警报(id);//它将生成=cDO4w67epn64o76
}
我在加密和解密中使用这些字符串

请给我一个真正的原因和解决方案(原因对我来说非常重要),我知道我可以替换(=)符号,但我担心包装器也会解码其余的编码字符串


注意:在php中,GET、REQUEST全局变量会自动解码url。

因为它位于
href
属性中,url是预期的,所以浏览器正在“规范化”url的URI编码(使用
javascript
伪方案)

您可以将其放在另一个属性中,然后得到该属性,如下所示:

函数myFunction(元素){
console.log(element.getAttribute(“数据值”);//它将生成=cDO4w67epn64o76
}

使用
javascript:
方案的URL仍然是URL

您试图将URL存储在URL中的JavaScript字符串中

将外部URL解码为JavaScript时,将解码编码字符的百分比

要执行您正在尝试的操作,您需要将JavaScript中的任何特殊字符(如
%
)转换为URL编码:

<a href="javascript:myFunction('%253DcDO4w67epn64o76')%3B">test</a>


不过,您应该只在创建bookmarklet时使用它

如果希望在单击某个内容时运行JavaScript,则使用单击事件处理程序。在现代方法中,可以使用
onclick
属性,但
addEventListener
的值等于“而不是90年代”


同样,如果你没有链接到某个地方,不要使用链接。请使用按钮。

到目前为止,您的答案对我来说是完美的,但在中,标准化将通过解码未保留的编码字符来应用,此处保留等号!