2010-03-22 68 views
13

我正在研究一个web应用程序,并使用jQuery插件Colorbox弹出一个窗口,该窗口呈现用于编辑父窗口元素的窗体。我使用Firebug来调试我的Javascript和jQuery,并且我注意到我无法使用jQuery控制台命令行在我的Colorbox HTML表单中选择一个元素。例如:iFrame中的Firebug和jQuery选择器

$ date = $(“#date”);

当从jQuery控制台命令行运行时,即使我有一个id =“date”的输入元素,并且Firebug“元素检查”指针可以在iFrame中查找元素,也不会返回任何内容。有没有办法让Firebug的控制台访问iFrame中的元素?

感谢您的帮助! 道格

+0

你能否澄清一下,当脚本部分页面正常工作时,脚本是否正常工作,但不通过控制台运行? – 2010-03-22 20:06:28

+0

您是否尝试过'var date = $(“#date”);' – ant 2010-03-22 20:18:44

+0

Javascript在Colorbox中工作,只是我无法在Firebug控制台中使用jQuery处理iFrame中的元素。 – 2010-03-24 12:52:26

回答

16

您需要通过iframe的文件作为您选择一个背景下,因为IFRAME有自己的分离DOM树:

$('#date', $('iframe').get(0).contentDocument); 

为了获得iframe的内容的访问,它必须从相同的加载域作为父文档。


只是在此详述,.contentDocument财产在Chrome(和FF)的作品,但不是在IE < 8.您必须使用.document

+0

Yaggo, 感谢您的回复,您能再详细一点吗?我不是通过访问iFrame的上下文来“获取”你的意思。 谢谢, Doug – 2010-03-24 12:53:23

+0

只是在这里详细说明,'.contentDocument'属性在Chrome(和FF)中工作,但不在IE中。你必须使用'.document'。 – Aliostad 2011-12-07 09:36:18

21

您正在寻找的cd方法,这里记载:http://getfirebug.com/wiki/index.php/Command_Line_API

这里有一个书签我用自动跳进了iframe任何的iFrame Facebook应用程序。它应该提供足够的示例来修改以供您使用。

javascript:with(_FirebugCommandLine){cd($$(".canvas_iframe_util")[0].contentWindow)} 

注意with一般是不好的做法,但是这是Firebug的字面如何执行你键入到控制台上,所以我模仿这一点。

运行此操作后,您键入到命令行中的所有内容都将在iframe的上下文中执行。

+3

这是天才。感谢您分享该片段。它使Facebook的iframe应用程序开发更容易。 – 2010-07-25 22:34:39

+4

澄清,如果你在Firebug控制台,所有你需要的是cd(iframedom.contentWindow) – 2010-08-26 17:34:48

+0

是的,虽然小书签是一个超级方便的工具。 – bcherry 2010-08-27 02:41:17