gpt4 book ai didi

javascript - 自动关注 safari 中的 javascript 对话框?

转载 作者:行者123 更新时间:2023-11-29 20:20:12 25 4
gpt4 key购买 nike

是的,在我进行了一些进一步的测试之后,我对这篇文章进行了一些编辑,我的原始文章在下面,但是,这现在是问题的症结所在。

我在一个页面上有 3 张图片,当点击其中一张时,会出现一个 javascript 窗口。确认对话框会显示,要求用户确认他们的选择。但是,由于图像在页面上的定位,对话框出现在图像上方,当尝试单击“确定”或“取消”时,似乎没有任何反应。然而,实际发生的是另一个确认出现在原始确认之上,并且这种情况仍在继续。但是,如果我在没有图像的按钮上单击某处,则它可以工作,但只有在双击后才能工作。

我发现,当显示对话框时,它不会自动获得焦点,因此您必须先单击它以聚焦,然后再次单击按钮关闭对话框。如果在第一次单击时单击按钮(或对话框本身)后面有图像的部分,则该图像实际上被单击,因为对话框没有焦点。但是,如果您单击对话框中后面没有图像的任何地方(因此聚焦在对话框上),然后单击确定或取消,它会起作用(即使确定或取消按钮后面有图像)。

所以我需要知道的是,有没有一种方法可以在对话框打开时自动将焦点放在对话框上,从而避免双击的需要?或者这只是一个 Safari 错误,我必须找到另一种解决方法。

--------原帖------------

我有一个包含一系列图片和链接的网站。单击图像或链接时,将显示一个 window.confirm 对话框,询问用户是否确定要执行该操作。

在 IE、Opera 和 Firefox 中这工作正常。

但是,在 Safari 中,当我单击对话框上的“确定”或“取消”按钮时,实际单击的是按钮后面页面上的任何内容,而不是对话框本身中的按钮。该对话框实际上显示“您确定要为 xyz 投票吗”,其中 xyz 基于单击的图像或链接 - 当我在对话框中单击“确定”或“取消”时,文本会更改为“确定”/“取消”后面的任何图像/链接按钮。

有没有人见过这个错误,和/或知道解决它的方法?

更新

我一直设法缩小范围,并且刚刚找到问题所在。

我发现,如果我单击按钮后面没有图像的部分(每个图像实际上是一个 .NET ImageButton),那么它将起作用(尽管它需要双击)。如果我点击一个按钮的一部分,它后面有一个图像,那么它会打开一个进一步的警告/确认对话框。我放了一些 JQuery,其中为每个图像添加了一个点击事件,点击它隐藏图像,然后显示对话框,对话框工作正常。

显然这不是我所需要的(真的不希望图像消失),但它缩小了范围。有什么解决办法吗?

另一个更新:我认为实际上警报/确认对话框最初并没有获得焦点,因此需要双击。如果我单击对话框(任何没有图像的地方)然后单击确定(即使该按钮后面有图像)然后它会起作用。那么,如何让它在打开对话框后自动聚焦于对话框?

最佳答案

我自己刚遇到这个问题,还没有找到答案,但我想我会张贴我观察到的东西,看看它们是否适合你。

您说您必须单击对话框以使其获得焦点才能工作。我发现您只需单击 Safari 中的任意位置,即使不是在对话框上,对话框也会开始工作。此外,这似乎并不是一个焦点问题,因为对话框的键盘控制仍然有效,空格键选择确定,或 Tab 键和空格键选择取消。你能确认一下吗?

您运行的是什么版本的 Safari 和什么版本的 Windows?我正在运行 Windows 7、Safari 5.0.3 (7533.19.4)。我也会尝试在 Mac 上对此进行测试,或者如果您方便的话,您也可以。

在 Windows 7 中,即使鼠标悬停在没有焦点的窗口中,按钮也会高亮显示。 Safari 中的这个问题会导致按钮出现一些有趣的 react 。当对话框第一次弹出时,页面上的按钮仍然会在鼠标悬停时突出显示,但对话框中的按钮不会。在 Safari 中单击后,对话框中的取消按钮会在鼠标悬停时高亮显示,但页面上的按钮不会高亮显示,对话框中的确定按钮也不会高亮显示。但是,如果不是在 Safari 中单击,而是通过单击对话框中的两个按钮突出显示某些其他应用程序,而页面上的按钮则没有。当 Safari 重新获得焦点时,甚至会出现更多不一致的行为。如果它通过在对话框中单击重新获得焦点,则对话框中的两个按钮都会突出显示。如果它通过不在对话框中的单击重新获得焦点,则只有“取消”按钮高亮显示,而不是“确定”按钮。

如果焦点是用鼠标转移的话,这就是全部。当通过 Alt-Tabbing 键转移焦点时,会出现不同的行为。在这种情况下,当另一个应用程序首次获得焦点时,按钮将保持原样,页面上的按钮将突出显示,而对话框中的按钮则不会。如果 Safari 被 Alt-Tabbed 返回,就好像什么都没发生一样,您仍然需要单击才能使对话框正常工作。如果在任何地方单击 Safari,无论是否在对话框中,对话框中的两个按钮都会突出显示,而页面上的按钮不会突出显示。

按钮的不一致行为可以在 Safari 的其他地方找到。打印和保存菜单项会弹出 Windows 默认对话框,因此其中的按钮与 Windows 的行为一致。 Safari 特定对话框,如 Javascript 确认、自定义工具栏...和向 Apple 报告错误...具有不同大小的按钮。此外,自定义工具栏中的完成按钮是默认按钮,但在单击对话框之前不会突出显示。 Report Bugs 中的 Submit 按钮是默认按钮,鼠标悬停在上面时会突出显示,而无需单击对话框,但不会显示蓝色环以指示它是默认按钮,直到鼠标悬停在它上面。

当然,所有这些都是我所经历的,所以对您来说可能不一样。在这一点上,由于行为如此不一致,我认为这是 Safari 中的错误,但我会进一步调查。

关于javascript - 自动关注 safari 中的 javascript 对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4429654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com