Kendo Mobile 完全挂起页面存在严重问题,使应用程序对触摸/鼠标完全没有响应。有问题的 CSS 在 Loader.transition() 中,this.container.css("pointer-events", "none")
它相当于:
document.body.style.pointerEvents = "none";
哎哟——太丑了。此外,在 _attachCapture 中,所有鼠标和触摸事件都有攻击性 JavaScript:
event.preventDefault();
如果使用带有嵌入式整页 WebView/UIWebView 的应用程序(需要关闭并重新启动应用程序),则致命。
如果出现以下情况,可能会发生挂起:
- 您的代码中有异常(即使在不明显的地方),
- 你打错了一个过渡(没有例外,只是挂起),
- 由于某种原因,用户的浏览器没有正确触发 transitionEnd 事件(这对于一个用户的最新 Chrome 浏览器是可重复的。
- 页面转换和Loader之间的交互存在失败模式(取决于时间,无法重复),
- 多种其他原因
请注意,Kendo 中有一条评论说:“这应该在某个时候清理(通过小部件的小部件),如果没有发生转换,则重构为不依赖完整回调的小部件。”,所以很明显 Telerik 知道有一个问题。
您可以在开发过程中使用以下代码至少在 Kendo Mobile 出现故障时发出警告:
var transitionTimer;
kendo.mobile.ui.Loader.prototype.wasTransition = kendo.mobile.ui.Loader.prototype.transition;
kendo.mobile.ui.Loader.prototype.transition = function() {
transitionTimer = setTimeout(function() {
alert('Kendo has hung the page');
}, 10000);
this.wasTransition.apply(this, arguments);
}
kendo.mobile.ui.Loader.prototype.wasTransitionDone = kendo.mobile.ui.Loader.prototype.transitionDone;
kendo.mobile.ui.Loader.prototype.transitionDone = function() {
clearTimeout(transitionTimer);
this.wasTransitionDone.apply(this, arguments);
}