ice*_*ite 6 html javascript google-chrome jquery-mobile jquery-mobile-popup
最新的chrome版本"43.0.2357.65 m"是否会破坏JQueryMobile 1.3.2?当我点击弹出窗口时,它会转到页面顶部,滚动条消失.在以前的版本中它很好.
问题影响了我的应用程序,但可以在JQueryMobile演示页面上重现:
请注意,每次都不会发生这种情况 - 如果再次尝试它可能会起作用,但如果从新选项卡开始执行步骤,它确实会一直发生.
我提出了Chrome的一个问题,但只是想知道是否有人知道发生了什么,如果有一个解决方法我可以实现.
谢谢!
Sup*_*rfy 10
弹出窗口似乎很奇怪,很难复制 - 转到下面的确切链接,然后单击所说的"登录"按钮似乎可以保证行为. http://demos.jquerymobile.com/1.3.2/widgets/popup/#&ui-state=dialog
我相信下面的解决方案可能是相关的,它解决了幻灯片转换的其他有趣问题.(只有弹出窗口的有限测试)但看起来很有希望
使用下面的代码段覆盖违规功能. 你必须在加载jquerymobile js之前调用它
// Override of $.fn.animationComplete muse be called before initialise jquery mobile js
$(document).bind('mobileinit', function() {
$.fn.animationComplete = function(callback) {
if ($.support.cssTransitions) {
var superfy= "WebKitTransitionEvent" in window ? "webkitAnimationEnd" : "animationend";
return $(this).one(superfy, callback);
} else {
setTimeout(callback, 0);
return $(this);
}
};
})Run Code Online (Sandbox Code Playgroud)
背景: jqueryMobile 1.3.2在某种程度上错误地实现了jquery one()事件处理程序附件.
.one() - "将处理程序附加到元素的事件.每个事件类型的每个元素最多执行一次处理程序. ":http://api.jquery.com/category/events/:基本上是事件触发和然后被删除.
但是,使用one()调用两者("webkitAnimationEnd和animationend") 可能意味着两个处理程序中只有1个(取决于浏览器)被触发,而另一个处理程序也会停顿并可能导致内存泄漏.
Chrome43处理webkitAniationEnd和animationend - 但在任何给定时间只能处理一个.这使得另一个留下并在下一次元素上的动画发生时触发.
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |