3

我正在制作一个供个人使用的greasemonkey 脚本,但是当iframe 完成加载时,我需要它来执行一个函数。我尝试使用 2 个单独的脚本,其中一个在 iframe 中加载并执行该函数,但该函数未定义,因为为了安全目的,greasemonkey 中的函数位于它们自己的环境中。

无论如何从父级的greasemonkey中存在的iframe内部执行一个函数?

iframe 父级的 Greasemonkey 代码:

frame2 = '[name="MainFrame"]';
function appendtoiframe2(){
    $(frame2).contentWindow.$('body').append('<div id="insecuremode_enable" style="position:fixed;bottom:0;background:#fff;">This div is now visible</div>');
});

iframe 内网站的 Greasemonkey 代码:

window.onload = function() {
    parent.appendtoiframe2();
}

谢谢你。

编辑:我意识到这样做可能很愚蠢,而不是让脚本直接在站点中运行。但我只希望在站点位于 iframe 中时执行此操作,但并不总是在 iframe 中。我还试图能够从 iframe 中控制父级内部的元素。

4

1 回答 1

2

您可以将事件处理程序绑定到iframeload 。(假设域相同,否则没有脚本访问 iframe)

从页面的主要部分:

$(function(){
     $('iframe[name="MainFrame"]').load(function(){
          $(this).contents().find('body').append('<div>.....</div>')
      });
});

API 参考:http ://api.jquery.com/load-event/

于 2013-01-06T01:06:25.233 回答