私は WinJS Windows Metro アプリケーションに取り組んでおり、私のページの 1 つで、背景として表示する画像への 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";
});
});
});
}