背景图片有问题!使用背景
在 jQuery mobile 中加载 div 背景图片的成功率约为 50%。所以每个编写 jqm 应用程序的人都会研究如何确保显示 div 背景图像(可见、显示、加载、加载)。喜欢 .load() 事件 (.on('load'..) 的 jqm 文档条目。基本上说 .load() 不兼容跨浏览器,然后 不提供解决方案。
有人烧毁了 jQuery 文档站点
@Neil 代码存在一个巨大的缺陷。哪个@Moe 提供了解决方案,但他的解释几乎是误导性的。 @Moe css 缺少宝石。只需要站出来说,“background-image 不行,background 可以!”
确认@Moe css 提示
http://www.webmasterworld.com/css/3557554.htm
完整的解决方案
$('#somediv').waitForImages( function() {
console.log("Images done loading");
},
function(loaded, count, success) {
var $imageDiv = $(this);
var url = $imageDiv.css('background-image');
var lngDivWidth = $imageDiv.css('width');
var lngDivHeight = $imageDiv.css('height');
var bckgnd_src = url.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
//hardcoded just for demonstration purposes.
bckgnd_src = 'https://lh3.googleusercontent.com/-3prblPgZ3n4/To9btWmWSFI/AAAAAAAAB2c/Ojs-7Ql3r6w/s720/DSC_2120.JPG';
if (!success) {
var $cacheImage = $('<img id="tempImg" />').attr('src', bckgnd_src).on('load',
function(e) {
$imageDiv.css('background', 'url('+bckgnd_src+')');
$imageDiv.width(lngDivWidth).height(lngDivHeight);
});
}
//jqm takes all opportunities to fail. Force display again.
$imageDiv.css('background', 'url('+bckgnd_src+')');
}, true);
要真正测试这一点,需要一个多页 jqm 应用程序。每页 10 张图片,可在页面之间导航。
只有在这段代码甚至没有运行时,才会在完全缓存的页面上搞砸。请有人建议如何确保即使在缓存页面上也可以运行此功能。
Dependency WaitForImages 插件(也带有难以理解的文档)
https://github.com/alexanderdickson/waitForImages