electron [Bug]:确认/警报弹窗会破坏焦点

wtzytmuj  于 5个月前  发布在  Electron
关注(0)|答案(9)|浏览(86)

预检清单

Electron 版本

29.1.4

您正在使用的操作系统是什么?

Windows

操作系统版本

版本:Windows 10 Home | 版本:22H2 | OS 构建:19045.4170 | 体验:Windows Feature Experience Pack 1000.19054.1000.0

您正在使用的架构是什么?

x64

最后已知正常工作的 Electron 版本

  • 无响应*

预期行为

使用弹出窗口(警告或确认),然后尝试聚焦输入元素不应引起问题。

实际行为

当应用程序启动时,与输入元素交互没有任何问题。
在点击 confirmalert 上的弹出窗口后,尝试聚焦刚刚导致弹出窗口的窗口(即输入元素)将不再起作用。
将焦点放在另一个窗口上,然后重新聚焦窗口可以修复该问题。

测试用例 Gist URL

https://gist.github.com/LqdBcnAtWork/9af23d4faa33e74874cd08ffbc8e4ed6

其他信息

我已经注意到这个问题有一段时间了,但没有发现这个问题是由弹出窗口引起的。我以为这是随机发生的,是由我在自己这边引起的一些奇怪的焦点交互引起的。诊断出问题的原因后,创建一个可以复现它的 Fiddle 只用了几分钟。
我提到这一点是因为这意味着这个问题已经存在于 Electron 的许多主要版本中。我不知道它存在多久了,但至少可以追溯到版本 21。我尝试了 12.2.3 以供娱乐,并在 Fiddle 中进行了测试,问题仍然存在。
我认为这是由于弹出窗口获得焦点,但窗口无法识别 返回 焦点时弹出窗口已关闭。我还认为这个问题可能是由 Chromium 引起的。但我不确定,因为 Chrome 或 Edge(我唯一可用的其他 Chromium 应用程序)不使用 alertconfirm 中的相同类型的弹出窗口,也不显示此问题。

jecbmhm3

jecbmhm31#

这是主要的代码:

function showAlert() {
 alert("这是一个测试警告。");
 window.focus();
}
function showPopupAndFocusInput() {
 alert("这是一个测试警告。");
 document.getElementById("myInput").focus();
 window.focus();
}
xmq68pz9

xmq68pz92#

我可以在Ubuntu上确认这一点,但是我无法确认这个说法是否一直如此。对我来说,Fiddle在我使用v28.2.7时运行得非常好,但从v29.0.0-alpha.1开始就出现了问题。v27.3.6v26.6.10对我来说也是可以正常工作的。

gpnt7bae

gpnt7bae3#

我可以在Ubuntu上确认这一点,但是我不能确认这个说法一直都是这样的。对我来说,Fiddle在我使用v28.2.7时运行得非常好,但从v29.0.0-alpha.1开始就出现了问题。v27.3.6v26.6.10对我来说也是可以正常工作的。
如果Windows因为Electron而改变了一些东西导致出现问题,我也不会感到惊讶。
@Maniiisha-sachdeva,你是在暗示在弹出窗口后调用window.focus();可以修复这个焦点问题吗?
我得等到星期一才能尝试一下。

b4qexyjb

b4qexyjb4#

我尝试在输入元素上调用 window.focus.focus,但都没有解决焦点问题。
我也尝试了以下版本:
(只是 alert / confirm 的 bug,而不是 focus 函数)

version       worked
28.2.7        ❌
27.3.6        ❌
26.6.10       ❌
21.0.0-beta.3 ❌ //the version of 21 that I noticed the issue with previously.
24.1.0        ❌ //version I had bumped the project to from 21.

鉴于 v28v27v26 对于我来说都失败了,但对于 @Prinzhorn 没有问题,我认为这主要是 Windows 的问题。不幸的是,我无法测试其他版本的 Windows。但是,我觉得很奇怪,它在使用 v29 的 Ubuntu 上停止工作。
无论如何,这让人放心,因为不仅仅是我和我的代码有问题。我现在必须先实施一个临时解决方案。
编辑:为了更清晰地表达,我更改了表情符号。

yzckvree

yzckvree5#

当我将输入类型更改为数字时,我可以通过上下箭头更改数字,但无法在其中输入。当我切换标签时,它开始工作。我可以进一步处理吗?

scyqe7ek

scyqe7ek6#

这个问题已经被自动标记为过时。如果这个问题仍然影响到你,请留下任何评论(例如“提升”),我们会保持开放。如果你有任何新的附加信息——特别是,如果这个问题在 latest version of Electronbeta 中仍然可复现——请在你的评论中包含它!

nkkqxpd9

nkkqxpd97#

尝试了31.0.1和32.0.0-alpha.2版本的fiddle,对我来说仍然无法正常工作。

9udxz4iz

9udxz4iz8#

重复了,对吧? $x_{1}e^{0f_1}$

8oomwypt

8oomwypt9#

这个的副本,对吧? #31917
嗯,之前没找到过。它也是3年前的。
很可爱。

相关问题