Javascript 在Windows Metro应用程序中缓存背景

Javascript 在Windows Metro应用程序中缓存背景,javascript,microsoft-metro,Javascript,Microsoft Metro,我正在开发一个WinJS Windows Metro应用程序,在我的一个页面上,我得到了一个要显示为背景的图像的URL。通过使用url(图像的url)并将其设置为style.backgroundImage,我可以很好地实现这一点 我需要在链接页面上使用相同的图像,但这意味着我必须发出另一个HTTP请求,这是我试图避免的。我研究了其他选择,发现LocalFolder是一个选项。唯一的问题是我不知道如何访问该文件并将其设置为背景 这是缓存数据以减少网络调用的正确方法吗 以下是我使用的代码: func

我正在开发一个WinJS Windows Metro应用程序,在我的一个页面上,我得到了一个要显示为背景的图像的URL。通过使用url(图像的url)并将其设置为style.backgroundImage,我可以很好地实现这一点

我需要在链接页面上使用相同的图像,但这意味着我必须发出另一个HTTP请求,这是我试图避免的。我研究了其他选择,发现LocalFolder是一个选项。唯一的问题是我不知道如何访问该文件并将其设置为背景

这是缓存数据以减少网络调用的正确方法吗

以下是我使用的代码:

function saveBackground(url) {
    localFolder.createFileAsync("background.jpg", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (newFile) {
        var uri = Windows.Foundation.Uri(url);
        var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
        var promise = downloader.createDownload(uri, newFile);
        promise.startAsync().then(function () {
            //set background here.
            var wrapper = document.getElementById("wrapper").style;
            localFolder.getFileAsync("background.jpg").then(function (image) {

                console.log(image.path);
                var path = image.path.split("");
                var newLocation = [];
                //This is just to make the backslashes work out for the url()
                for (var i = 0; i < path.length; i++) {
                    if (path[i] != '\\') {
                        newLocation.push(path[i]);
                    } else {
                        newLocation.push('\\\\');
                    }
                }
                console.log(newLocation);
                var newPath = newLocation.join("");
                var target = "url(" + newPath + ")";
                wrapper.backgroundImage = target;
                console.log(wrapper.backgroundImage);
                wrapper.backgroundSize = "cover";

            });
        });
    });
}
函数saveBackground(url){
localFolder.createFileAsync(“background.jpg”,Windows.Storage.CreationCollisionOption.replaceExisting)。然后(函数(newFile){
var URI=Windows .Fase. Uri(URL);
var downloader=new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
var promise=downloader.createDownload(uri,newFile);
promise.startAsync().then(函数(){
//在这里设置背景。
var wrapper=document.getElementById(“wrapper”).style;
localFolder.getFileAsync(“background.jpg”).then(函数(图像){
console.log(image.path);
var path=image.path.split(“”);
var newLocation=[];
//这只是为了使url()的反斜杠生效
对于(变量i=0;i
这取决于要传输的图像类型和数量。如果只有一个图像而不是一个沉重的图像(