当前位置: 首页 > 知识库问答 >
问题:

如何将检查元素右键单击添加到电子应用程序中?(就像在谷歌Chrome)

孟彦
2023-03-14

我正在尝试将Inspect element右键单击包含到我的电子应用程序中,我发现了以前的一篇文章,但这篇文章已经有4年历史了,我不知道在哪里包含它。我已经设法让devtools自动打开,但现在我想添加右键单击inspect元素。我的问题是。

如何以及在何处添加inspect元素作为右键单击以在整个应用程序中全局工作,以及如何使用快捷方式打开开发工具。目前,我在main中自动打开Devtools。js脚本,但当我点击它离开,我没有办法把它带回来。提前谢谢你的帮助。

共有1个答案

张岳
2023-03-14

将以下代码添加到窗口的渲染器过程代码中。请注意,您可能需要调整前两行,这取决于已经定义了哪些API元素...

const { remote, webFrame } = require ('electron');
const { getCurrentWebContents, Menu, MenuItem } = remote;
//
let rightClickPosition;
//
const contextMenu = new Menu ();
const menuItem = new MenuItem
(
    {
        label: 'Inspect Element',
        click: () =>
        {
            let factor = webFrame.getZoomFactor ();
            let x = Math.round (rightClickPosition.x * factor);
            let y = Math.round (rightClickPosition.y * factor);
            getCurrentWebContents ().inspectElement (x, y);
        }
    }
);
contextMenu.append (menuItem);
//
window.addEventListener
(
    'contextmenu',
    (event) =>
    {
        event.preventDefault ();
        rightClickPosition = { x: event.x, y: event.y };
        contextMenu.popup ();
    },
    false
);

参考资料:

  • webFrame.getZoomFactor()
  • contents.inspect元素(x, y)
  • menu.popup(选项)

至于如何使用快捷方式打开devTools,如果您的菜单栏包含一个子菜单,该菜单项的角色切换devTools,则会自动发生这种情况。例如,在主流程代码中,将其添加到菜单模板将提供一个带有标准键盘快捷键的切换开发人员工具菜单项:

{
    label: "Developer",
    submenu:
    [
        { role: 'reload' },
        { role: 'toggledevtools' }
    ]
}

参考:菜单项角色

更新:

似乎有一种更强大、更灵活的方式来处理webContents级别的上下文菜单,方法是收听自Electron 1.0以来记录的“上下文菜单”事件。2.

一个重要特性是不需要再考虑缩放因子,在params中返回的xy坐标总是正确的。

参考:WebContent事件:“上下文菜单”

以下是使用此方法的一些替代渲染器过程代码:

const { getCurrentWebContents, Menu, MenuItem } = require ('electron').remote;
//
let webContents = getCurrentWebContents ();
//
let rightClickPosition;
//
const contextMenu = new Menu ();
const menuItem = new MenuItem
(
    {
        label: 'Inspect Element',
        click: () =>
        {
            webContents.inspectElement (rightClickPosition.x, rightClickPosition.y);
        }
    }
);
contextMenu.append (menuItem);
//
webContents.on
(
    'context-menu',
    (event, params) =>
    {
        rightClickPosition = { x: params.x, y: params.y };
        contextMenu.popup ();
    }
);

 类似资料:
  • 我设置了一个JPopupMenu,它将显示用户是否右键单击JList中的某个单元格,但现在必须先选择该单元格,才能显示JPopupMenu。我想知道如何在右键单击后选择该单元格,然后像现在一样显示JPopupMenu。当没有选择任何项目并且鼠标不在列表中的任何项目上时,我也会显示一个菜单。 代码:

  • 问题内容: 如何在SWT树中的树项上添加右键单击弹出菜单。每个树项目都应在其上启用右键 问题答案: 只需使用。 你去了:

  • 所以,现在我正在使用谷歌表单将数据添加到我的电子表格中。我想添加我的第二个谷歌表单响应下面我的第一个谷歌表单响应自动添加行(我做这个过程在另一个表使用importrange),即使在我的第一个谷歌响应有一些数据。这两个谷歌表单的内容保持不变,所以我想在1页中看到它。 我之所以要这样做,是为了尽量减少创建另一个电子表格来收集所有数据。当我这样做时,总是会收到一条错误消息“#REF!”因为我知道谷歌表

  • 有没有办法在谷歌Chrome中禁用inspect元素,右键点击和F12?

  • 我在Kubernetes服务的默认命名空间上安装了一个python应用程序。它使用starlette\u exporter,并向Prometheus公开endpoint。当我访问endpoint时,我看到: 我还在库伯内特斯服务的命名空间上安装了。它没有自定义,我使用此命令进行安装: 要将我的应用程序指标添加到Prometheus堆栈中,我可以在Grafana仪表板上跟踪它们,有哪些必要步骤?据我

  • 我对react很陌生(我只使用过abit类),我想把输入值添加到并在屏幕上写出来,但我的大脑被锁住了,我不知道如何...