单击 Chrome 和 Safari 中的输入字段后的奇怪行为

Posted

技术标签:

【中文标题】单击 Chrome 和 Safari 中的输入字段后的奇怪行为【英文标题】:Weird behavior after clicking on input fields in Chrome and Safari 【发布时间】:2012-03-12 17:01:31 【问题描述】:

我有一个奇怪的问题。当用户单击输入字段或选择时,页面内容会向左移动。我不知道为什么。这只发生在 webkit 浏览器中。

这个页面使用了webkit-transform,可能有问题?

你可以在这里测试 http://zapmama.be/home/dev#/ontour

我希望你能帮助我。 非常感谢!

文森特

【问题讨论】:

要重现,请单击 SELECT,然后单击任何 INPUT。 我现在通过每次发生这种情况时用 JS 更改位置来“掩盖”这种行为。你仍然可以看到它移动了一点。 【参考方案1】:

你有以下错误

Unsafe javascript attempt to access frame with URL http://www.zapmama.be/home/dev#/ontour from frame with URL http://www.youtube.com/embed/DSopUVEhG8Y. Domains, protocols and ports must match.
Unsafe JavaScript attempt to access frame with URL http://www.zapmama.be/home/dev#/ontour from frame with URL http://www.youtube.com/embed/mMhSIqE-pBA. Domains, protocols and ports must match.

奇怪行为的原因是这个警告信息:

2event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future.

您将在here、here 和here 中找到有关此问题解决方案的更多信息

【讨论】:

我相信你已经使用 Web Inspector/Chrome 开发者工具来检查这个。这些消息与损坏的布局无关(layerX/layerY 处理 Web Inspector 检查Event 对象的方式)。【参考方案2】:

我遇到过这种情况,行为非常相似。即使错误是由输入焦点触发的,但问题是由完全独立的元素引起的。

所以打开它发生的页面,复制问题,然后打开检查器。然后浏览页面上的兄弟和其他组件,将它们设置为“显示:无”。当问题组件被隐藏时,问题将自行修复。该组件是您需要更改的组件。

在我的例子中,我使用“左:50%”作为居中的一部分,并将其更改为不同的方法。

恕我直言,您应该避免将 left/top 与 translate3d 混合。

【讨论】:

以上是关于单击 Chrome 和 Safari 中的输入字段后的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

safari/chrome iphone中的动画速度没有变化

html 表单中的输入文本框在 Firefox 上正常工作 在 Chrome 和 Safari 上不工作

在 FF 和 Chrome(但不是 Safari)中单击几次后,jQuery animate scrollLeft 停止工作

iOS Safari/Chrome 不会向上滚动以在无线电输入上显示验证错误消息

Chrome/Safari 中的后退按钮错误

是否可以通过单击应用程序 WebView 中的 URL 来打开移动 Safari?