Chrome控制台如何通过JavaScript切换至my_frame等不同JS上下文

切换控制台执行上下文到my_frame的方法
控制台默认处于top页面上下文时,有两种方式可以完成切换/等效执行:
使用控制台内置快捷命令直接切换(效果和手动点击上下文下拉菜单选择my_frame完全一致)
现代Chromium内核浏览器(Chrome、Edge等)、Firefox的控制台都内置了专属的cd()辅助命令,专门用于切换控制台执行上下文,直接在控制台执行以下代码即可:// 先获取目标iframe的window引用,选择器可根据你的iframe实际属性调整 const myFrameWin = document.querySelector('iframe[name="my_frame"]').contentWindow; // 调用内置cd命令切换上下文 cd(myFrameWin);执行完成后控制台顶部的上下文选择器会自动选中
my_frame,后续输入的所有代码都会默认在my_frame的作用域下运行。注意:
cd()是开发者工具控制台专属的调试命令,不属于JavaScript原生标准API,不能写在页面业务代码中使用。不切换下拉菜单,直接在my_frame上下文执行代码
如果你只是需要在帧上下文运行代码,不需要修改控制台的选中状态,可以直接通过iframe的window引用执行代码:const myFrameWin = document.querySelector('iframe[name="my_frame"]').contentWindow; // 用帧window的eval方法执行代码,运行上下文完全处于my_frame内 myFrameWin.eval(` // 此处填写你需要在my_frame中运行的任意代码 console.log('当前执行上下文window匹配:', window === myFrameWin); `);如果需要简化书写,也可以用
with语句临时绑定作用域,省去每次写前缀的麻烦:const myFrameWin = document.querySelector('iframe[name="my_frame"]').contentWindow; with(myFrameWin) { // 块内代码默认优先从my_frame的作用域查找变量、调用方法 console.log('当前帧地址:', location.href); }
内容的提问来源于stack exchange,提问作者Pal
相关产品推荐
相关产品推荐

