【问题标题】:How do I cd into an iframe in chrome developer tools or firebug lite in chrome?如何在 chrome 开发人员工具中 cd 到 iframe 或在 chrome 中使用 firebug lite?
【发布时间】:2011-08-08 09:42:42
【问题描述】:

当我尝试 cd 时,控制台显示“cd is not defined”

【问题讨论】:

  • cd into an iframe 是什么意思?
  • cd 是用于更改终端窗口中目录的命令,例如在 Windows 的开始菜单或 Mac 的终端中键入 cmd 时打开的窗口或 Ubuntu。如果您按照一些指令 cd 进入一个目录,他们期望您在这样的窗口中输入命令,并且它们在 firebug 或 chrome 开发人员工具中不起作用。至于使用开发者工具在 iframe 中运行 javascript 命令,我自己仍在寻找答案。
  • 说的很清楚,cd "允许你在页面中使用一个框架的窗口来代替"getfirebug.com/wiki/index.php/Command_Line_API#cd.28window.29
  • cd 在 WebKit 的检查器中不受支持。而且,从 zachleat 发布的问题来看,请求添加此类功能的相关 webkit 错误是 webk.it/42554

标签: javascript firebug google-chrome-devtools firebug-lite


【解决方案1】:

是的,你是对的 Firebug 有这个很棒的命令。我很喜欢。这让iframes 的工作变得更加容易。就我个人而言,我不会仅仅因为 cd() 在其中可用而去 Firefox,因为我也可以在 chrome 开发工具中使用 cd 做任何我能做的事情。

只需在命令提示符中使用 contentWindow 关键字即可访问 iframe window 对象。然后你会很好地访问那里的任何函数和变量。

例如,我的iframe 中有一个无法通过控制台正常访问的变量。

但我仍然可以像这样通过contentWindow 访问变量:

theIfraem.contentWindow.secret;

如果您想触发函数,请执行以下操作:

theIframe.contentWindow.myfunc();

如果你想定义一些变量(最难的):

var script = document.createElement('scrept');
script.innerHTML = "var secret = 'hi'";
theIframe.contentWindow.document.body.appendChild(script);

这就是cd() 实际所做的。我知道它不如 Firebugs cd()。不过好消息是cd() is coming to Chrome

【讨论】:

  • 注意状态栏中的“”选择框(也可以在上面的屏幕截图中找到。)它类似于 cd() 并将确定其“窗口”上下文控制台中的框架命令将被评估。
  • 仅适用于同域 iframe,不适用于跨域 iframe。
  • 8 年后,Chrome 仍然不支持cd(),你可能想编辑你的答案:)
【解决方案2】:

在 Chrome Devtools 中,“上下文切换器”位于页面底部。看到<top frame> 下拉菜单了吗?在那里,您可以更改脚本的执行位置。这实际上与cd() 相同。

这在https://stackoverflow.com/a/8581276/89484中有更多解释

【讨论】:

  • 对于那些疯狂搜索该菜单的人来说,它现在位于过滤器旁边的“控制台”选项卡下。
【解决方案3】:

对于使用 Firefox 的人,cd() 不起作用。

相反,一种可能的解决方案是在 iframe 的 contentWindow 上调用 eval() 以在 iframe 的上下文中运行 javascript。

var frame = document.getElementById("MyIframe").contentWindow;
frame.eval("alert(1);");

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2015-01-07
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多