HTMLのすべてのページで.JSへの呼び出しでロードするこのjQuery AJAX関数があります
プリロードするファイルが既にキャッシュにあるかどうかを確認する if ステートメントを配置したいと思います。これにより、スクリプトがすべてのページですべてのコンテンツを実行することを回避できます。すべてがキャッシュされたら、それは必要ありません。そして、それを実行するのに時間がかかります!
注: クライアントが Web サイトに到達するたびにプリロードが必要なため、すべてのページにそれが必要です。(メインページだけではありません)
preload.js は次のとおりです。
(function() {
ここに if ステートメントを挿入するには、次のようにする必要があります。
if(xhr[src="myslide.swf"].status = 200);
alert('cached');
または (概念) myslide.swf がキャッシュにある場合は何もしません。そうしないと...
}else{
setTimeout(function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'myslide.js');
xhr.send('');
var xhr = new XMLHttpRequest();
xhr.open('GET', 'myslide.swf');
xhr.send('');
var xhr = new XMLHttpRequest();
xhr.open('GET', 'images.xml');
xhr.send('');
var xhr = new XMLHttpRequest();
xhr.open('GET', 'param.xml');
xhr.send('');
$.ajax({
type: "POST",
url: "/javascript/getnames.php",
data: "$list",
cache: true,
dataType:"json",
success: function(result) {
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// Get the size of an object
var size = Object.size(result);
var i = 0;
for(i=0; i<size; i++) new Image().src = "/site/" + result[i];
/*alert(result[X]);*/
}
}); //closes the ajax call
var splashArray = new Array();
// Load the Splash XML file and assign each image within to an array
$.get('/javascript/preloadGallery.xml', function(xml) {
$('image', xml).each(function (i) {
splashArray.push($(this).attr("src"));
});
work_with_splash();
});
function work_with_splash () {
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// Get the size of an object
var size = Object.size(splashArray);
var i = 0;
for(i=0; i<size; i++) new Image().src = splashArray[i];
/*alert(result[X]);*/
} //closes the spalsh Call
}, 500);
};
})();
すべてのスクリプトは完璧に機能します。私が見逃しているのは if ステートメントだけです。
助けてくれてありがとう。