我正在开发一个Web应用程序并使用jQuery插件Colorbox弹出一个窗口,该窗口显示一个用于编辑父窗口元素的表单。我正在使用Firebug来调试我的Javascript和jQuery,我注意到我无法使用jQuery控制台命令行在我的Colorbox HTML表单中选择一个元素。例如:
$ date = $(“#date”);
从jQuery控制台命令行运行时,不返回任何内容,即使我有一个id =“date”的输入元素,并且Firebug“element inspect”指针可以在iFrame中找到该元素。有没有办法让Firebug的控制台访问iFrame中的元素?
感谢您的帮助! 道格
答案 0 :(得分:21)
您正在寻找cd
方法,请在此处记录:http://getfirebug.com/wiki/index.php/Command_Line_API
这是我用来自动跳转到任何iframed Facebook应用程序的iframe的书签。它应该提供足够的示例来修改以供您使用。
javascript:with(_FirebugCommandLine){cd($$(".canvas_iframe_util")[0].contentWindow)}
请注意,with
通常是不好的做法,但这实际上是Firebug执行您在控制台中键入的内容,因此我模仿了它。
运行此命令后,您在命令行中输入的所有内容都将在iframe的上下文中执行。
答案 1 :(得分:15)
您需要将iframe的文档作为选择器的上下文传递,因为iframe有自己独立的DOM树:
$('#date', $('iframe').get(0).contentDocument);
为了获取iframe内容的访问权限,必须从父文档的同一域加载。
这里详细说明,.contentDocument
属性在Chrome(和FF)中有效,但在IE< 8中无效。您必须使用.document
。