2011-03-11 6 views
0

# 기호 다음에 URL을 받고 응답이있는 응용 프로그램이있는 경우 ValueChangeHandler 기록이 있습니다. 심각한 문제 : URL이 다른 브라우저에서 다르게 이스케이프됩니다.히스토리 변경 처리기에서 반환 된 문자열 간의 차이 처리

예를 들어 # riley % 2Blark % 40gmail.com (으)로 이동하면 Chrome에서 ValueChangeHandler riley%2Blark%40gmail.com을 전송하고 FireFox는 [email protected]을 전송합니다. 내가 Firefox에서 여분의 공간으로 끝나기 때문에 URL.decodeQueryString을 실행하고 싶다면 이것은 끔찍한 차이입니다.

다른 브라우저에 대해 별도의 구현을 작성하지 않으면 어떻게 처리 할 수 ​​있습니까? 나는이 두 가지 가능한 솔루션의

답변

1

을 생각할 수 : 토큰은 토큰을 수신에 #riley%2Blark%40gmail.com/%2B-a-space 의의 이되도록

  1. U 토큰에 다른 매개 변수 를 추가 시도 할 수는 두 번째 확인 토큰의 일부. 두 번째 부분에 % 2B가 있으면 토큰을 urldecode하십시오. else '+'를 으로 변경하십시오.

  2. Location.hash 을 JSNI를 통해 사용해 볼 수도 있습니다. 나는 결과가 통일해야한다고 생각한다.

+0

좋은 아이디어. 불행히도 # 2가 실패합니다 - 다른 문자열을 반환합니다. 파이어 폭스는 해쉬를 pre-urldecode하기로 결정했다. –

+1

http://code.google.com/p/google-web-toolkit/issues/detail?id=6128 –

관련 문제