동일한 원본 정책을 Firefox에서 구현하는 데 점점 더 실망스러운 문제가 있습니다.
저는 터치 스크린을 지원하는 통합 시스템을 개발 중이며 화면의 여러 위치에 있는 iframe에서 웹 페이지를 로드할 수 있는 사용자 옵션이 있습니다. 웹페이지는 다음과 같습니다.어느모든 종류의 도메인 및 위치(google, yahoo, 인트라넷 페이지 등)의 웹페이지에 문제가 있습니다.
iframe에 응답으로 iframe의 ID(또는 다른 고유 식별자)를 제공하는 onclick 이벤트를 추가할 수 있어야 합니다. 이는 iframe에서 활동(웹 탐색)이 진행 중이며 iframe을 다시 로드해서는 안 된다는 것을 알려줍니다(페이지는 활동 시 중단되어야 하는 고정된 자동 업데이트 간격으로 설정되어 있습니다).
나는 Google이 나에게 반환한 모든 내용을 읽었으며(그러나 나는 이 문제에 대해 반박하고 싶습니다) 이것이 (다른 많은 솔루션 중에서) 가장 좋은 솔루션이라는 것을 알았습니다.
<iframe src='http://google.com' id='iframe1' onload='netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); this.contentWindow.document.addEventListener("click", function(event) {alert(this.id);}, false)'></iframe>
이것은 나에게 규칙적인 것을 제공합니다다음에 대한 허가가 거부되었습니다.http://localhostWindow.document 속성을 가져오려면http://google.com
알아요왜이 오류 메시지가 나타납니다. 제 질문은 간단합니다. 어떻게 제거하나요?
통합 시스템이므로 소스에서 Firefox를 컴파일할 수 있고, 필요한 경우 소스 코드를 편집할 수 있으며, prefs.js 등을 변경할 수 있습니다. 하지만 Firefox를 사용해야 합니다(다른 모든 합리적인 웹 브라우저에는 멋진 명령줄 스위치가 있다는 것을 알고 있습니다). 끄려면...) 하지만 우리는 제거하기 어려운 Firefox 플랫폼과 (아주) 긴밀하게 통합되어 있습니다.
우리는 현재 Debian Squeeze 플랫폼에서 Firefox v.3.5.16(EOL이라는 것을 알고 있습니다. 나중에 업그레이드할 예정입니다)을 사용하고 있습니다. 필요하다면 최신 Firefox 버전으로 업그레이드할 수 있지만, 제가 찾은 바에 따르면 이 문제는 훨씬 더 악화되는 것 같습니다.
TL;DR 동일한 출처 정책을 종료하도록 도와주세요.어떤 식으로든 가능교차 도메인 iframe을 통해 코드를 변경해야 하는 통합 플랫폼용 Firefox 3.5.16.
답변1
나는 꽤 바보 같다고 느낀다.
사용하면 작동합니다UniversalXPConnectUniversalBrowserWrite 대신.
예: netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
또한 다음을 수행할 수 있습니다.~ 아니다this.id 또는 this.parentNode.id를 사용하세요. 여전히 (다른) 액세스 오류가 발생합니다. 이 문제를 해결하려면 먼저 임시 변수에 저장하십시오.
onload='var tempstuff = this.id; this.contentWindow.document.addEventListener("click", function(event) {alert(tempstuff);}, false)'