![](/img/trans.png)
[英]Smooth scroll work not correctly when using window.location.hash
[英]Correctly encoded string gets decoded when pushed into window.location.hash
目標:正確地將data
屬性中的字符串放入window.location.hash
。
代碼:
map = {path: $(this).attr('data-path'), rev: $(this).attr('data-rev')};
window.location.hash = getMapParams(map);
function getMapParams(map) {
s="";
for(key in map) {
value=eval("map."+key);
if (s.length > 0) {
s+="&";
}
s+=encodeURIComponent(key)+"="+encodeURIComponent(value);
}
return s;
}
問題:只要data-path
屬性包含空格,Firefox就無法正確放入哈希。 該空間將顯示為未編碼,而在其他瀏覽器中,它正確編碼為%20
。
奇怪的怪癖:如果我調試代碼,字符串將與編碼空間一起列出。
研究完成:我已經找到了很多解決方案來正確讀取 Firefox中的哈希值。 以這種或那種方式,我的代碼工作正常。
問題:如何阻止Firefox對我放入window.location.hash的字符串中的空格進行urldecoding
我經常試圖避免使用window.location.hash
因為它在瀏覽器中並不統一。
因此,而不是做以下
window.location.hash = "some hash value";
我會做
window.location.href = window.location.href.split("#")[0] + "#" + encodeURIComponent("some hash value");
此外,雖然Firefox在地址欄中顯示解碼的哈希值(即''而不是%20),但如果您嘗試復制地址,則實際編碼。 因此,顯示的內容不是URI中的內容。
順便說一句,我總是使用以下代碼訪問哈希
var hash_val = window.location.href.split("#")[1] || "";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.