2011-04-30 3 views
2

내가 greasmonkey 스크립트를 만들고있는 웹 페이지가 있습니다. 이 페이지에는 여러 개의 iframe이 있습니다. 나는 그들이 문제라고 알았지 만 문제를 해결하는 방법을 모른다.해결 방법 "속성 '경고'에 액세스 할 수있는 권한이 거부되었습니다"?

처음에는 내 스크립트가 버튼으로 작은 div 상자를 만듭니다. 버튼 스크립트를 누르면 특정 조건에서 웹 페이지 내용을 분석하고 alert로 전화합니다. 파이어 폭스에서

자바 스크립트 콘솔은 이미 내 스크립트는 DIV 박스에 추가되는 상위 문서의 몸을 찾기 위해 document.getElementByID을 사용하고 있기 때문에 그 접근이 document에 대한 거부 나에게 소리 질러.

스크립트가 실패하고 iframe에 걸리면 쉽게 피할 수있는 문제 일 수 있습니다. 아직 document에 대한 액세스를 제공하므로 기본 페이지에서 계속됩니다.

내 기능에서 경고를 사용하려고하면 문제가 발생합니다. iframe이 내 스크립트를 대신 받아서 Permission denied to access property 'alert'으로 죽이는 것처럼 보입니다.

내가 어떻게 브라우저/스크립트 또는 그게 내 스크립트를 주 문서에서 실행하고 싶지 않아 iframe을 귀찮게하고 싶지 않다는 것을 어떻게 알 수 있습니까? 아니오 스크립트 부속 파일을 설치하고 기본 도메인을 허용하고 차단했습니다. 보조 도메인 (내부 iframe로드) 및 모든 알림 메시지가 정상적으로 처리됩니다. 그러나 사용자에게 noscript를 설치하도록 요청할 수는 없으며 특정 도메인을 사용/사용하지 않도록 설정하면 스크립트가 정상적으로 작동해야합니다. 모든 iframe을 사용할 수있는 솔루션을 찾아야합니다.

혼란스럽지 않길 바랍니다.

도움 주셔서 감사합니다.

+0

일부 코드는 도움이 될 것입니다. – user123444555621

답변

5

RE :

나는 단지 내 스크립트가 주 문서에서 실행하려는 브라우저/스크립트 또는 무엇을 말해 내가가 iframe에 의해 방해되지 않게하려면 어떻게 내가 NO-스크립트 부가 기능을 설치하지 어떻게? 기본 도메인을 허용하고 보조 iframe을로드하는 보조 도메인을 차단하고 모든 알림 메시지가 정상적으로 처리됩니다.

먼저 가능한 경우 iframe을 무시하도록 include 및 exclude 지시문을 조정하십시오. EG :

// @include http://example.com/normal/* 
// @include http://example.com/extra/* 
// @exclude http://example.com/extra/in_iframe/* 


다음으로, Metadata Block 후 코드의 첫 번째 라인으로이 두 줄을 추가 iframe을 실행에서 GM 스크립트를 중지합니다

if (window.top != window.self) //-- Don't run on frames or iframes 
    return; 

.

+1

2 줄의 코드를 추가하면 충분했고 모두 잘 작동했습니다. – user1651105

+0

안녕하세요; 기꺼이 도와주세요. –

관련 문제