2010-08-07 2 views
0

새 Safari 사용자 스크립트 관리자 인 NinjaKit에서 잘 작동하는 Greasemonkey 자바 스크립트를 작성했지만 Safari 5 확장 빌더를 사용하여 동일한 스크립트를 컴파일하고 컴파일 할 때 매우 유용합니다 이상한 행동.Safari가 페이지와 DOM 상태를 캐싱하는 것 같습니다.

스크립트는 사용자에게 옵션 편집 화면을 제공합니다. 저장 버튼을 클릭하면 스크립트는 사용자 환경 설정을 HTML5 localstorage API를 통해 JSON 패킷으로 저장 한 다음 스크립트를 실행하여 옵션 화면을 닫고 페이지를 다시로드합니다. 페이지가 다시로드되면 스크립트는 localstorage의 JSON에서 환경 설정을 다시로드해야하며 스크립트는 새 환경 설정에 따라 사용자가 설정 한대로 페이지를 표시해야합니다.

내가보기에 문제는 확장자로 실행하면 저장 버튼을 클릭하면 스크립트가 페이지를 다시로드하지만 페이지가로드 될 때 사용자가 설정에 적용한 변경 사항이 적용되지 않습니다. 그 페이지. 이상한 부분은 브라우저 새로 고침 버튼을 통해 페이지를 다시 수동으로 다시로드하면 사용자가 설정에서 변경 한 사항이 모두 갑자기 나타납니다. 분명히 데이터는 localstorage에 저장되었지만 페이지가 처음으로 다시로드 될 때 어떤 이유로 캐싱 된 파일에서 다시로드되고 두 번째 수동 재로드에서만 새 페이지가 올바르게 표시됩니다. 나는 이것이 ninjakit의 일반 사용자 스크립트로 작동하는 이유와 실제로 파이어 폭스, 오페라 및 구글 크롬에서 실제로 작동하는지 이해할 수 없다. 단지 사파리의 확장 기능으로 작동하지 않을 것이다. Safari 5가 캐시 된 페이지를 다시로드하지 않도록하기 위해 여러 가지 방법을 시도했습니다. 예를 들어 추가 매개 변수를 URL에 추가했지만 페이지를 두 번 다시로드하지 않고도 작동시킬 수는 없습니다.

BTW 스크립트가 크로스 브라우저 호환이되기를 원하기 때문에 기본 사파리 확장 설정 시스템을 사용하지 않습니다. 그래서 설정을 localstorage에 저장하고 있습니다.

누구도이 동작을 목격 한 적이 있습니까? 아니면이를 해결할 수있는 단서가 있습니까? 그것은 나를 정신적으로 몰아 넣고 있습니다. ...

+0

태그는 질문 제목에 속하지 않습니다. QuantumSoup의 편집은 큰 개선이었으며 이후의 편집은 단지 외적인 주석이었습니다. –

답변

0

정확하게 문제를 일으키지 않았지만 문제를 해결할 수있었습니다.

확장 빌더에서 "스크립트 시작"이 아닌 "종료 스크립트"로 추가하여 스크립트를 작동 시켰습니다. 이제는 모두 정상적으로 작동하는 것 같습니다. 휴!

관련 문제