使用 imgcache.js 在 Ionic/Angularjs 中下载并保存背景图片以在本地离线使用它
Download and save a background image locally to use it offline in Ionic/Angularjs using imgcache.js
我正在使用 imgcache.js 和自定义指令来下载图像并保存在本地以供离线使用。
图书馆:
https://github.com/chrisben/imgcache.js
https://github.com/sunsus/ngImgCache/
情况是我需要将背景图像应用于内容(通常我们将背景图像应用于 .scroll-content class),而在 css 中我们不能使用指令或服务将文件保存到本地。
我知道 imgcache.js 库有一个名为:ImgCache.cacheBackground() 的函数,但我不知道如何使用它并将本地文件应用到 .scroll-content。
拜托,有什么帮助吗?有什么例子吗?
我找到了一种实现缓存的方法:https://github.com/chrisben/imgcache.js
我已将图像应用到 .scroll-content:
.scroll-content{
background-image: url(http://test.com/background.jpg);
}
并创建了一个指令:
.directive('cacheBackground', function($timeout) {
return {
restrict: 'A',
link: function(scope, el, attrs) {
// timeout to give time to init imgCache
$timeout(function() {
ImgCache.isBackgroundCached(el, function(path, success) {
if (success) {
ImgCache.useCachedBackground(el);
} else {
ImgCache.cacheBackground(el, function() {
ImgCache.useCachedBackground(el);
});
}
});
}, 200);
}
};
})
修改了 imgCache.js 中的 DomHelpers.getBackgroundImage 以使用 getComputedStyle 即使我们有 jQueryLite:
DomHelpers.getBackgroundImage = function (element) {
if (ImgCache.jQuery) {
return element.attr('data-old-background') ? "url(" + element.attr('data-old-background') + ")" : element.css('background-image');
} else if (ImgCache.jQueryLite) {
var style = window.getComputedStyle(element[0], null);
if (!style) {
return;
}
return element[0].getAttribute("data-old-background") ? "url(" + element[0].getAttribute("data-old-background") + ")" : style.backgroundImage;
} else {
var style = window.getComputedStyle(element, null);
if (!style) {
return;
}
return element.getAttribute("data-old-background") ? "url(" + element.getAttribute("data-old-background") + ")" : style.backgroundImage;
}
};
然后我将指令应用于我认为的离子含量:
现在背景图片也可以离线使用了。
谢谢!
我正在使用 imgcache.js 和自定义指令来下载图像并保存在本地以供离线使用。
图书馆: https://github.com/chrisben/imgcache.js https://github.com/sunsus/ngImgCache/
情况是我需要将背景图像应用于内容(通常我们将背景图像应用于 .scroll-content class),而在 css 中我们不能使用指令或服务将文件保存到本地。
我知道 imgcache.js 库有一个名为:ImgCache.cacheBackground() 的函数,但我不知道如何使用它并将本地文件应用到 .scroll-content。
拜托,有什么帮助吗?有什么例子吗?
我找到了一种实现缓存的方法:https://github.com/chrisben/imgcache.js
我已将图像应用到 .scroll-content:
.scroll-content{
background-image: url(http://test.com/background.jpg);
}
并创建了一个指令:
.directive('cacheBackground', function($timeout) {
return {
restrict: 'A',
link: function(scope, el, attrs) {
// timeout to give time to init imgCache
$timeout(function() {
ImgCache.isBackgroundCached(el, function(path, success) {
if (success) {
ImgCache.useCachedBackground(el);
} else {
ImgCache.cacheBackground(el, function() {
ImgCache.useCachedBackground(el);
});
}
});
}, 200);
}
};
})
修改了 imgCache.js 中的 DomHelpers.getBackgroundImage 以使用 getComputedStyle 即使我们有 jQueryLite:
DomHelpers.getBackgroundImage = function (element) {
if (ImgCache.jQuery) {
return element.attr('data-old-background') ? "url(" + element.attr('data-old-background') + ")" : element.css('background-image');
} else if (ImgCache.jQueryLite) {
var style = window.getComputedStyle(element[0], null);
if (!style) {
return;
}
return element[0].getAttribute("data-old-background") ? "url(" + element[0].getAttribute("data-old-background") + ")" : style.backgroundImage;
} else {
var style = window.getComputedStyle(element, null);
if (!style) {
return;
}
return element.getAttribute("data-old-background") ? "url(" + element.getAttribute("data-old-background") + ")" : style.backgroundImage;
}
};
然后我将指令应用于我认为的离子含量:
现在背景图片也可以离线使用了。
谢谢!