Javascript iframe在Greasemonkey脚本中未定义

Javascript iframe在Greasemonkey脚本中未定义,javascript,iframe,greasemonkey,Javascript,Iframe,Greasemonkey,我已经创建了一个Greasemonkey脚本,它在firebug编辑器中运行良好,删除了Greasemonkey的细节,但在我尝试将其打包为用户脚本时却没有。Firefox错误控制台报告我尝试使用的iframe未定义 我已经将userscript缩减到最低限度,在这种情况下,它应该将iframe html打印到firebug控制台中,并在firebug编辑器中运行,但不作为userscript工作: // ==UserScript== // @name Movies // @i

我已经创建了一个Greasemonkey脚本,它在firebug编辑器中运行良好,删除了Greasemonkey的细节,但在我尝试将其打包为用户脚本时却没有。Firefox错误控制台报告我尝试使用的iframe未定义

我已经将userscript缩减到最低限度,在这种情况下,它应该将iframe html打印到firebug控制台中,并在firebug编辑器中运行,但不作为userscript工作:

// ==UserScript==
// @name          Movies
// @include       http://*.princecharlescinema.com/*
// @include       http://princecharlescinema.com/*
// ==/UserScript==

// stop script loading multiple times
if (top !=self) return;

var iframeHTML = window.frames['iframe2'].document.documentElement.innerHTML;
unsafeWindow.console.log(iframeHTML);

如果有任何用处的话,完整脚本的要点是我从这个iframe收集所有td标记,从中获取一些信息,然后将一些新的html插入到一些相同的td标记中


任何帮助都将不胜感激。

也许您需要等待DOMFrameContentLoaded

我尝试使用长计时器,但问题不是iframe中的某些内容没有准备好,而是Greasemonkey的行为就像实际的iframe标记本身不存在一样。测试长计时器并根据其数组位置识别帧[2],而不是它的名称属性使它工作。DOMFrameContentLoaded是比setTimeOut更好的解决方案。