Il est tout à fait possible de faire fonctionner Greasemonkey contre une iframe. question commune pour déterminer comment l'empêcher de s'exécuter sur les iframes ainsi que sur la page principale. Vous devriez être en mesure de prendre l'inverse de cette réponse pour empêcher le code de s'exécuter sur la fenêtre supérieure :
if (window.top == window.self) //don't run on the top window
return;
//rest of the actual executing code goes here
Je l'ai testé et vous pouvez utiliser @include
pour correspondre au domaine B (le domaine de l iframe
) et exécuter un morceau de code arbitraire qui le modifie. J'ai exécuté le test userscript suivant sur un page de test et il réussit à masquer le logo Google (uniquement lorsque Google est dans une 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();
});
Pour autant que je sache, il n'y a pas de restrictions inter-domaines impliquées ici. Je ne suis pas sûr de ce qui se passe si le iframe
n'est pas présent lors du premier chargement de la page (qui est le moment où Greasemonkey s'exécute).