在Kendo UI Mobile ListView中,单击链接时会调用本机浏览器打开外部链接的脚本。
PhoneGap脚本如下: 在Android上: navigator.app.loadUrl(link,{openExternal:true}); 在iOS上: window.open(link,'_ system`);
可以在相应的本机浏览器上打开链接。
但是,当用户从本机浏览器切换回应用程序时,会出现一些问题。
在Android上,屏幕挂在原始视图上,再次按下后退按钮时,屏幕不会冻结,可以刷新。
但是,在iOS上,屏幕也会挂在原始视图上。点击屏幕时,移动完整视图(带有布局)。无法解冻此屏幕。
如何解决这个问题,以便在从原生浏览器切换回应用程序后,屏幕可以解除干扰?
非常感谢你的帮助。
更新1:
我将原始标记更改为标记,现在每个人都可以使用。但我仍然很想知道它是否是Kendo UI Mobile的某种错误。
答案 0 :(得分:0)
Kendo Mobile完全挂起页面存在严重问题,使应用程序对触摸/鼠标完全没有响应。违规的CSS在Loader.transition()中,其this.container.css("pointer-events", "none")
相当于:
document.body.style.pointerEvents = "none";
哎哟 - 这太丑了。另外,在_attachCapture中,所有鼠标和触摸事件都有令人反感的JavaScript:
event.preventDefault();
如果使用具有嵌入式完整页面WebView / UIWebView的应用程序(需要关闭并重新启动应用程序),则会致命。
如果出现以下情况,可能会发生挂起:
请注意,Kendo中有一条评论说:"这应该在某些时候清理(widget by widget),如果没有转换,则重构为不依赖于完整回调的小部件。&#34 ,显然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);
}