我已经使用 jquery-mobile、angularjs 和 jqm angular adapter 实现了一个 html5 webapp .
在使用默认 android 浏览器的 android 设备上(chrome 工作正常!)我在 jqm 文件中随机遇到错误,如“# has no method 'addClass' or 'jqmEnhanceable'。 它总是可以通过多次重新加载网站来重现。
调试结果表明,在 Angular 初始化过程中,特别是在对文档调用 $compile 之前,适配器调用 .page() 所有带有 data-role="page"注释的 div。
这会导致创建大量 jquery 移动小部件,即产生大量“负载”。 错误总是在 .page() 调用期间发生,但在错误发生之前处理的页面数量随机变化,有时它可以完全工作。
对我来说,浏览器似乎在某个时间点“忘记”了 jquery 或 jquery 移动方法。 你们中有人有过类似的观察吗? Android 默认浏览器是否存在已知问题?
问题也有描述here .
提前致谢!! 诺曼
最佳答案
这不是一个完整的答案,但可能会对遇到类似问题的人有所帮助。
我的问题是在 jQuery Mobile 弹出窗口中点击列表元素后出现的。 ng-click 调用的 $scope 函数有两个任务: 1. 在 $scope 中设置一个值,该值是该字段的 ng-model - 通过单击该字段激活弹出窗口。 2. 关闭弹窗。
因此,在 Angular 更新 View 时,更新的字段位于弹出窗口的后面。
解决方案是重新排序函数中的代码,以便首先调用弹出窗口关闭,然后更新 Angular 模型。
这个问题出现在我的两台安卓测试设备中的一台上。稍旧的设备(三星平板,Android 3.1,浏览器版本 3.1-UEKME)有问题,较新的设备(HTC 手机,Android 4.0.3,浏览器版本 4.0.2213303110.348012)总是没问题 - 这可能是因为 bug在以后的版本中被删除。
关于javascript - android 浏览器的随机 jquery 移动/Angular 内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376587/