从JavaScript以编程方式打开Safari / Google Chrome开发者工具

t3psigkw  于 2023-02-06  发布在  Go
关注(0)|答案(6)|浏览(262)

我正在寻找一种方法来打开WebKit的“开发者工具”从一个脚本附加到一个网页。我需要的解决方案,谷歌浏览器和Safari浏览器,这将打开开发者工具窗格,如果它还没有打开,并(希望,如果你能弄清楚如何)也切换到一个特定的标签/部分说,窗格打开。
(使用情形,如果有人感兴趣:如果出现错误并且开发人员正在查看页面,我希望打开console.log输出窗口;这个特定的页面将是一些JavaScript单元测试的输出。)
我悬赏这个问题是因为它显然是一个没有人满意的答案之前,答案是一个毛茸茸的。请不要回答它,除非你有一个 * 真实的的答案 *,这两个:1)适用于 * 两种浏览器 *,2)不需要在静态网页上无法工作的私有扩展API。
请参阅(相关,但特定于Chrome和扩展程序):Can I programmatically open the devtools from a Google Chrome extension?

rvpgvaaj

rvpgvaaj1#

简单地说:* 你不能 *。
开发工具不是沙盒(与任何网页不同),因此授予沙盒环境打开和控制非沙盒环境的能力是重大安全设计缺陷
我希望这能回答你的问题:-)

icomxhvb

icomxhvb2#

您不能直接从您的网页使用Chrome开发工具,它与浏览器捆绑在一起。
但是你可以像普通的网络应用程序一样使用它。进入Chrome开发者工具,然后进入Contributing。你会找到关于为你的应用程序使用开发者工具的帮助。

设置

  • 在Mac OS/Windows上安装Chrome Canary或在Linux上从Chromium持续构建归档下载最新的Chromium构建版本
  • https://chromium.googlesource.com/chromium/blink.git克隆Blink git存储库
  • 设置本地Web服务器,该服务器将在某个端口(8090)上提供来自WebKit/Source/WebCore/inspector的文件

奔跑

  • 使用以下命令行标记运行Chrome Canary的一个副本:- -remote-debugging-port = 9222--user-data-dir = blink/chromeServerProfile--remote-debugging-frontend ="http://localhost:8090/front_end/inspector.html"这些标志会导致Chrome允许websocket连接到localhost:9222,并从您的本地git存储库提供前端UI。(将chromeServerProfile的路径调整为系统中的某个可写目录)。
  • 打开一个示例页面(例如www.example.com)。www.chromium.org).
  • 使用命令行标记运行Chrome Canary的第二个副本:- -user-data-dir =/work/chromeClientProfile.打开http://localhost:9222.在缩略图中你会看到来自另一个浏览器示例的示例页面.点击它开始远程调试你的示例页面.
  • 打开的DevTools网页由第一个浏览器示例中的remote-debugging-frontend提供,该示例由本地文件系统的git repo提供。调试此Devtools网页并像编辑其他web应用一样编辑其源代码。

希望这是你需要的。

pqwbnv8z

pqwbnv8z3#

除了Console API提供的日志记录功能外,没有办法从页面内脚本控制web开发工具,让脚本控制更多的功能将是一个严重的安全问题,因为它将允许网页控制浏览器的一部分。
唯一与您要做的事情有一定关系的API是debugger命令,只有在开发人员工具已经打开的情况下,它才会切换到脚本窗格。
但是你想为谁开发这个功能呢?
如果是为在网站上工作的开发人员准备的,那么最好手动使用现有的开发人员工具,通过设置断点,或者 * 在异常时暂停 * 切换。
如果是针对最终用户,不要,除非你的网站是由高技术的网络开发人员使用的,否则如果开发人员工具突然弹出错误,你只会吓跑用户。
如果你真的想显示错误,你可以实现你自己的日志框架和错误报告的UI,它与基本的JS一起工作,不依赖于特定的浏览器环境。

s5a0g9ez

s5a0g9ez4#

这里有另一个答案,它针对你提到的用例/目标(检测错误,获取和显示控制台日志)提出了一个解决方案,而不是标题中不可能的目标。
你可以制作和使用一个控制台 Package 器,并在你的代码中使用它,和/或如果你使用/import外部js,你可以canmonkey patch控制台函数,但是你需要在加载它们之前应用它。

ni65a41a

ni65a41a5#

不,任何安全的浏览器都不允许脚本打开扩展,因为这会导致不安全。
但是,您可以设计一个附加组件/扩展或控制台API的做同样的..为特定的网站.
创建this之类的附加组件来满足该要求。
您可以尝试发送键'CTRL' + SHIFT' + 'I',可能适用于Chrome任何FireFox(在IE中,您需要使用'F12'
我使用它时,需要在这个附加组件使用很少的实用程序,以更好地工作,然后内置。
编辑:现在一天Chrome是先进的许多新的进步source
希望这能有所帮助!

ztmd8pv5

ztmd8pv56#

讨厌回答这样一个老问题,但很惊讶没有看到这是一个答案,所以我想我会添加它的情况下,它可以帮助别人在未来。
假设您可以访问源代码,您可以将alert("open devtools");语句放在要调试的第一行之前。此警报将给予您有机会打开DevTools并在第一行设置断点,然后清除警报,从而允许代码继续运行并命中断点。

相关问题