iframe에 대해 Greasemonkey를 실행하는 것이 가능합니다. 실제로는 iframe 및 기본 페이지에서 실행을 중지하는 방법을 결정하기 위해 common question입니다. 당신은 상단 창에서 실행에서 코드를 방지하기 위해 그 대답의 역을 할 수 있어야한다 : 나는 그것을 테스트 한 당신이 도메인 B합니다 (iframe
의 도메인)을 일치 @include
을 사용할 수 있습니다
if (window.top == window.self) //don't run on the top window
return;
//rest of the actual executing code goes here
및 그것을 수정하는 임의의 코드 조각을 실행하십시오. test page에서 다음 테스트 사용자 스크립트를 실행했으며 성공적으로 Google 로고를 숨 깁니다 (Google이 iframe
인 경우에만).
// @include http://www.google.com*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
if (window.top == window.self) //don't run on top window
return;
alert('running on a frame');
$('img').each(function() {
$(this).hide();
});
내가 알 수있는 한 여기에는 교차 도메인 제한이 없습니다. 페이지가 처음로드 될 때 (Greasemonkey가 실행될 때) iframe
이 존재하지 않으면 어떻게 될지 모르겠습니다.
도메인 -b는 실행되지 않습니다. 브라우저의 도메인 간 제한으로 인해 문제가 발생했습니다. 도메인 간 제한 사항을 수행하고 도메인 -b에서 소스에 액세스 할 수 없습니다. 무언가가 존재하는지 확인하기 위해 DIV를 읽을 수 없습니다. @include 도메인 -b가 iframe (도메인 -b)에서 트리거되어 GM 스크립트를 통해 마크 업에 액세스 할 수 있기를 바랬습니다. 나는 다양한 접근법을 탐구 할 것입니다. – nopuck4you
글쎄, 그것은 나를 위해 일했다 :'iframe' 도메인을'@include '할 때 제 3 자 도메인'iframe'에서 실행할 Greasemonkey 스크립트를 얻을 수 있습니다. 샘플 코드와 테스트 페이지를 사용하여 답변을 업데이트했습니다. – npdoty