在 Electron 中出现“alert”后无法编辑输入元素

Pab*_*hes 5 html javascript electron

总长DR

\n

我正在学习电子。我有一个 HTML 元素<input type="text">,我可以编辑其中的文本。执行完 后alert,当我单击该input元素时,它不显示光标,并且按键盘中的按键不会更改元素中的文本。如果我在浏览器中执行相同的操作,则不会发生这种情况,并且我不确定我是否做错了什么。

\n

最小的、可重现的示例

\n

设置

\n

在终端的空文件夹中写入:

\n
npm init # And leave the defaults\nnpm install --save-dev electron\n
Run Code Online (Sandbox Code Playgroud)\n

然后创建index.js

\n
const {app, BrowserWindow} = require("electron");\n\napp.on(\'ready\', () => {\n    let b = new BrowserWindow();\n    b.loadFile("index.html");\n});\n
Run Code Online (Sandbox Code Playgroud)\n

index.html

\n
<!DOCTYPE html>\n<html lang="en">\n\n<head>\n    <meta charset="UTF-8">\n    <meta name="viewport" content="width=device-width, initial-scale=1.0">\n    <title>Test</title>\n</head>\n\n<body>\n    <input type="text">\n    <button onclick="alert(\'foo\');">Hi</button>\n</body>\n\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n

重现步骤

\n
    \n
  1. 在终端上写npx electron .以启动应用程序。
  2. \n
  3. 编辑文本中的内容input
  4. \n
  5. 按下Hi按钮。
  6. \n
  7. 关闭对话框。
  8. \n
  9. 单击该input元素。
  10. \n
\n

该元素不显示光标,也不会更改以显示我正在编辑它。按键盘上的按键不会改变 .xe2x80x99 中的文本input

\n

多次单击它会选择该文本,然后我可以将其删除。但我\xe2\x80\x99m无法写入新文本。

\n

实际行为

\n

预期行为

\n

在浏览器中打开index.html,然后重复这些步骤。在浏览器中,该元素显示一个光标,并且 I\xe2\x80\x99m 能够编辑其中的文本。

\n

预期行为

\n
\n

I\xe2\x80\x99m 不确定我\xe2\x80\x99m 是否做错了什么,或者这是否实际上是预期的行为。

\n

package.json如果这里的一些信息有帮助的话,这里是:

\n
{\n    "name": "test",\n    "version": "1.0.0",\n    "description": "",\n    "main": "index.js",\n    "scripts": {\n        "test": "echo \\"Error: no test specified\\" && exit 1"\n    },\n    "author": "",\n    "license": "ISC",\n    "devDependencies": {\n        "electron": "^17.1.2"\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

我在发布后测试它时注意到的奇怪之处是,如果我最小化窗口并再次打开它,我\xe2\x80\x99m 能够编辑输入。如果我打开和关闭开发人员工具也会发生这种情况。

\n

mid*_*ing 2

所以,这是一个非常奇怪的问题。

在我的系统上复制代码后,一切似乎都正常工作。IE:警告框关闭,人们仍然可以将光标聚焦在文本框中,甚至可以毫无问题地编辑文本框。

由于 Electron 不会以任何方式改变 Chrome 的正常行为,并且它在我(和其他人)的系统上正常工作,因此只能得出一个结论。Chrome 有问题。

要消除 Chrome 文件损坏的任何可能性,请尝试删除您的node_modules文件夹和package-lock.json文件。

接下来,通过npm install在命令提示符下运行来重新安装 Electron。