Mic*_*ael 41 html javascript url encoding fragment-identifier
是否window.location.hash包含url部分的编码或解码表示?
当我打开相同的URL(http://localhost/something/#%C3%BC其中,%C3%BC转化为ü在Firefox 3.5和Internet Explorer 8),我得到不同的值document.location.hash:
#%C3%BC#ü有没有办法在两个浏览器中获得一个变体?
Eli*_*rey 38
不幸的是,这是Firefox中的一个错误,因为它location.hash在访问时会解码额外的时间.例如,在Firefox中试试这个:
location.hash = "#%30";
location.hash === "#0"; // This is wrong, it should be "#%30"
Run Code Online (Sandbox Code Playgroud)
唯一的跨浏览器解决方案是使用(location.href.split("#")[1] || "")而不是获取哈希.设置哈希使用location.hash似乎适用于所有支持的浏览器location.hash.
回答我自己的问题,我目前的解决方案是解析window.location.href而不是使用window.location.hash,因为前者总是(即在每个浏览器中)url编码.因此,CMS提出的decodeURIComponent功能始终可以安全使用.YUI做同样的事,因此它不会那么错......
您可以使用decodeURIComponent,它会#ü在所有情况下返回:
decodeURIComponent('#%C3%BC'); // #ü
decodeURIComponent('#ü'); // #ü
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16308 次 |
| 最近记录: |