목표 :data
속성의 문자열을 window.location.hash
에 올바르게 넣습니다.올바르게 삽입 된 문자열이 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
속성은 파이어 폭스가 제대로 해시를 넣어 실패에 공백이 포함되어있다. 공간은 인코딩되지 않은 상태로 표시되는 반면 다른 브라우저에서는 정확하게 %20
으로 인코딩됩니다.
이상한 단점 : 나는 문자열이 인코딩 된 공간 나와있는 코드를 디버깅합니다.
연구가 수행: 나는 제대로 파이어 폭스에서 해시를 읽기 위해 많은 솔루션을 발견했다. 한 가지 또는 다른 방법으로 이것은 내 코드로 잘 작동한다.
질문 : 어떻게 내가
페이지를 스크롤하십시오. 대신'_' 또는 뭔가를 사용할 수 있습니까? –
대답이 아닐 수도 있습니다. 그냥 value = map [key];를 사용해보세요. 마지막으로 encodeURIComponent()를 한 번만 반환하십시오. –
모든 공백을 다른 문자로 바꿀 수는 있지만 폴더 및 파일을 가져 오려면 Dropbox API를 사용하는 프런트 엔드입니다. 나는 많은 코드를 변경해야 할 것이다. 그리고 다른 브라우저에서도 정상적으로 작동합니다. 것은 공간이 아니라는 것입니다. 그것은 urlencoded 공간입니다. '/'('% 2F')와 같은 다른 URL 인코딩 된 문자는 그대로 남아 있습니다. – Wilgert