骨干木偶——图像不能在iPad上可靠显示——种族状况



这真的很奇怪。甚至难以量化的。我不得不修改了几次。

我能做的最好的事情是:

我的应用程序的技术堆栈是Backbone Marionette、handlers.js、require.js.

该应用程序包含的图像大多为图标大小,比如32x32及以下。一些jpg,一些png,一些svg。

有些图像,每次都是相同的,不会显示。这是一个常见的问题,很多人都在上面发帖。没有什么大新闻。

但是,如果我按下睡眠按钮,让iPad静置一两分钟,直到设备真正进入休眠模式,然后将其恢复,图像就会缓慢而神奇地消失。当屏幕亮起时,它们不会突然显示。它们随后逐渐消失。

只需按下睡眠按钮并立即苏醒是不起作用的。必须等待一分钟,直到它真正冬眠。

在真正的休眠之后,无论我刷新页面多少次,图像都在那里。但是,如果我清除Safari上的缓存并加载页面,图像就不会再出现了——直到我做了休眠操作。

所有这些图像都会在电脑上的浏览器中显示出来(各种风格)。只是在iPad上他们没有。

起初,我以为这只是我在收藏视图中加载的图像。事实并非如此。我在应用程序中有一个第三方HTML5视频播放器。它有一个播放按钮和svg格式的其他控件。这也体现了上述行为。

一旦iPad休眠并复活,图像就会消失。只有清除缓存才能使它们再次消失。

当图像不显示时没有404错误(在MAC上的开发控制台中检查)。事实上,如果我只是点击视频播放按钮应该显示的屏幕,播放器就会开始。所以按钮似乎真的在那里,只是没有画在屏幕上——直到你做了休眠的事情。

不管怎样,应用程序中的某些图像总是会加载。我正在查看这些图像,看看我是否能注意到它们或渲染它们的代码有什么特别之处。

我倾向于认为这不是图像本身,因为普通网页中的相同图像总是显示在iPad上。此外,普通网页中的第三方视频播放器会在iPad上显示svg播放按钮和控件。

只是在我的应用程序中发生了这种行为。因此,认为我的应用程序就是问题所在是合乎逻辑的。我只是似乎找不到一个共同的线索来处理那些总是有效的图像和那些不有效的图像。

不确定我能在这里发布什么代码。我会看看发布什么可能有意义。

通过框架动态加载图像肯定是个问题。他们在那里,但不画画。不知道实际问题是什么。实际上只发生在Safari移动浏览器上。即使是旧的IE,也无法在其他任何地方实现。不过,要知道一个绝对有效的解决方案。通过将所有图像显式地包含在标记的div中来预加载它们。当你加载你的提线木偶应用程序时,删除div-$("#preload-images").remove()。之后,通过提线木偶动态添加图像时,图像永远不会失败。

最新更新