使用以下简单的javascript代码分析location.hash:<script type="text/javascript">alert(location.hash);</script>
我很难分离出包含&的GET变量(编码为%26)和用于分隔变量的&。
范例一:
示例二:
如您所见,示例1没问题,但是让javascript知道示例2中的“code = php&code”超出了我的能力范围:
(注意:我并没有真正使用这些变量名,只有在搜索词与搜索键不匹配的情况下,才能将它们更改为其他名称,所以我认为这不是有效的解决方案。)
最佳答案
片段标识符(“哈希”)中的%26和&之间没有区别。 “&”只是URI的查询(“search”)段中具有特殊含义的保留字符。将'&'转义为'%26'所获得的应用程序级可见性仅需将'a'转义为'%61'。
由于没有用于在片段标识符中隐藏结构化数据的标准编码方案,因此您可以自己制作。例如,使用“+ XX”十六进制编码来编码组件中的字符:
hxxp://www.example.com/page#code=php+20+2B+20php&age=15d
function encodeHashComponent(x) {
return encodeURIComponent(x).split('%').join('+');
}
function decodeHashComponent(x) {
return decodeURIComponent(x.split('+').join('%'));
}
function getHashParameters() {
var parts= location.hash.substring(1).split('&');
var pars= {};
for (var i= parts.length; i-->0;) {
var kv= parts[i].split('=');
var k= kv[0];
var v= kv.slice(1).join('=');
pars[decodeHashComponent(k)]= decodeHashComponent(v);
}
return pars;
}
关于javascript - 检测位置中&和%26之间的差异。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/619240/