簡體   English   中英

當推入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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM