문제

내부적으로 Firefox는 JSON이 웹 워커와의 메신저를 통해 전달 된 객체를 인코딩합니다. 그러나 이것은 Firefox 3.5가 아닌 Trunk Builds (3.6+)에서만 작동 하므로이 작업을 현재 플랫폼에 추가하는 방법입니다. Window.atob () 및 wind

Mozilla는 이것을 개발자 Wiki에 공개적으로 언급하지만, 많은 사람들이 커뮤니티의 많은 사람들이 이런 일이 발생한다는 것을 알게되었습니다. Ejohn의 블로그 테스트 확인 : http://ejohn.org/files/bugs/postmessage/

나는 이것이 3.5에서도 문자열 만 통과하며 3.6에서 객체를 통과 할 것임을 확인했다.

도움이 되었습니까?

해결책

Firefox 3.5에서 자동 JSON 인코딩이 작동하지 않는 것을 눈치 채지 못했지만 주로 기어와 함께 작업하고 있는데 어쨌든 지원하지 않습니다.

a를 포함 시키십시오 JSON 유틸리티 작업자 스크립트와 상위 스크립트 모두에서 직접 인코딩하여 해독합니다. 이것은 기어로 나에게 상당히 잘 작동합니다.

인코딩 된 JSON 문자열이 문자열로 유지되기 때문에 Firefox가 JSON 인코딩을 자동으로 수행 할 때이 접근법이 깨지지 않아야합니다.

다른 팁

JavaScript에는 Base64 Strings 디코딩 및 인코딩에 대한 두 가지 기능이 각각 있습니다.

atob () btoa ()

내 문제에 대한 해결책을 찾았습니다!

스레드 변수가 전 세계적으로 선언하더라도 다른 함수 내부에서 속성이 선언 된 경우 .onmessage 속성을 잃는 것 같습니다. 속성이 글로벌 범위에서 인스턴스화되면 JSON 메시지가 올바르게 구문 분석됩니다.

나는 아직도 여기서 무슨 일이 일어나고 있는지 이해하지 못하지만 적어도 추가적인 Stingify/JSON 라이브러리에 의존하지 않고도 물체를 전달하는 방법을 알아 냈습니다.

누군가 나에게 이것을 설명 할 수 있도록 더 잘 이해할 수 있다면, 그것은 감사 할 것입니다 :)

여기에 테스트 케이스를 설정합니다. http://x.miernicki.com/ 누군가가 신경 쓰면 스레드 간 메시지를 Firebug 콘솔에 기록합니다. 이로 인해 Fox3.5에서 물체를 통과하는 데 도움이되었으며 궁극적으로 문제가 무엇인지 알 수있었습니다.

FF 전용 솔루션을 분명히 찾고 있으므로 시도해 보셨습니까? yourObject.toSource()?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top