有没有办法在 javascript 控制台中将上下文更改为 iframe?

IT技术 javascript iframe console firebug
2021-03-08 15:07:32

我想更改在 webkit 开发人员工具/firebug 控制台中执行的 javascript 的上下文,以执行其代码,就像它从页面上的 iframe 内部运行一样。

我知道我可以通过在单独页面上的 iframe 中打开页面来做到这一点,但我想在它与父框架交互的地方运行代码。

6个回答

Chrome 15 允许您更改控制台的范围。在控制台底部,在清除控制台按钮旁边,有一个菜单,<top frame>显示将提供可用框架列表:

在此处输入图片说明

Firefox目前正在开发一个类似的功能

在此处输入图片说明


您还可以使用命令行跨帧导航

var frame = document.getElementById("frame1").contentWindow;
cd(frame);
请注意,此下拉菜单现在位于控制台的顶部,而不是底部。
2021-04-22 15:07:32
我可以在控制台中执行代码来完成同样的事情,还是必须单击帧选择器?
2021-05-10 15:07:32
@bodine - 你有没有找到从控制台命令完成它的方法?
2021-05-12 15:07:32
真可惜。如果框架的内容发生更改,它将不会保留选定的框架。它切换回“顶帧”
2021-05-14 15:07:32
我在 Chrome 38 中看不到这一点。无法快速弄清楚如何在 Chrome 中执行此操作;在 Firefox 中使用 cd(frames[<index number>]) 代替。
2021-05-20 15:07:32

您可以<iframe>使用该window.frames[x]功能s 中执行代码例如,

window.frames[0].runFunction()
如果 FireBug 是您的首选武器,这是一个不错的选择。谢谢。
2021-04-23 15:07:32
您将如何在 jQuery 命令等函数之外执行代码?或者,如果您想在某个框架下获得对 DOM 元素的引用,然后针对该元素执行代码?
2021-05-08 15:07:32
因此,例如: window.frames[0].alert()
2021-05-20 15:07:32

在今天的 Chrome(版本 52)中,您所要做的就是在开发工具的“元素”选项卡中选择 iframe。您在 JS 控制台中运行的任何内容都将自动在所选 iframe 的上下文中运行。

例如,这里我选择了一个 iframe,当我document.location.pathname在控制台中输入时,它返回 iframe 的 src 属性,而不是地址栏中的 URL:

在此处输入图片说明

对于萤火虫解决方案,请参阅另一个 SO 问题的答案但是,不能像 Dennis 的 Chrome 解决方案那样跨域工作。

编辑:使用较新版本的 firebug,它们可能已修复跨域问题。

默认情况下,脚本语句和命令的执行是在顶级窗口的上下文中完成的。如果您使用框架,请使用“cd()”控制台命令。

cd() 不带参数调用 cd() 返回顶层窗口。

cd(window) 允许您将命令行表达式评估从网页的默认顶级窗口更改为框架窗口。

更多信息,在这里

这正是我要找的。(它适用于 Firefox)谢谢。
2021-05-02 15:07:32