5

使用 PhoneGap 时,我在 GS4 设备上遇到了一个奇怪的问题,当页面呈现时,我的 Web 应用程序的某些元素无法正确显示,但是一旦单击或按下该页面,元素布局就会正确。在我的应用程序中翻译事件之前,偶尔会出现一个闪烁的白色窗口。

这个问题只出现在 GS4 上,当我在 GS4、Note 或 iPhone 等其他手机上尝试时从未出现过。

4

4 回答 4

5

这些元素是动态生成的吗?我也有同样的问题,我想,它实际上需要一些硬件加速(GPU加速)。我们应该通过 css 启用 3d 渲染。只需使用

transform: translateZ(0);

对于特定元素。这对我有用,试试吧,可能对你有用。

请检查此链接

于 2013-08-29T09:41:21.737 回答
2

简而言之,问题是:android。根据运行 GS4 的版本,网络浏览器的行为不同并会引发不同的问题。IE 我做了一个 phonegap 应用程序,它运行良好,然后在 jellybean 中根本不起作用。不用说我现在是开发原生的。但是,在您的元素中使用 translate 和 3d 变换,这会导致所有元素都使用硬件加速进行重绘,并且如果元素被动态注入到 DOM 中,则会强制重绘这些元素

于 2014-02-05T22:20:56.930 回答
1

我在银河趋势(android 4.0.4)中遇到了类似的问题:页面中的某些更改没有正确显示(重绘某些元素,隐藏/显示其他元素),直到我点击屏幕,而它在任何其他设备上都可以完美运行我已经测试过(从 android 2.3 到 4.4)。

我已经测试了在堆栈溢出和其他地方发现的许多补丁:在 css 中添加 transcate3d,查询元素宽度......没有任何效果;

只有当我添加$myPage.find("[data-role=footer]").hide(0).show(0);我的页面最终在银河趋势上正确呈现时。

在我的情况下,我认为它有效,因为它强制重绘页脚并且我隐藏/显示的元素位于页脚中。

也许在其他元素上强制隐藏/显示可能对您有所帮助?

于 2014-02-05T23:24:28.283 回答
1

尝试使用其他元素进行操作,例如:

$('#footer').fadeTo(1,0.99,function(){
   $('#footer').fadeTo(1,1);
});
于 2013-09-08T13:25:08.887 回答