JS预加载

<!DOCTYPE html>

 

<html lang="en">

 

<head>

 

<meta charset="UTF-8">

 

<meta name="viewport" content="width=device-width, initial-scale=1.0">

 

<meta http-equiv="X-UA-Compatible" content="ie=edge">

 

<title>Document</title>


 

<style type="text/css">

.image-item {

 

width: 40%;

 

margin-right: 5px;

 

display: inline-block;

 

height: 350px;

 

width: 250px;

 

background: silver;

 

}



 

.beauty-list {

margin: 0 auto;

width: 560px;

height: 1200px;

}

 

.preload{

margin:0 auto 50px auto;

width:560px;

height: 820px;

 

}

 

.disN{

display: none;

}

</style>

 

</head>

 

<body>

 

<!--预加载-->

<div class="preload" id="preload">

<!--方式一:通过标签预先加载图片资源-->

<img src="https://webimg.quanjing.com/Recommend/1558458888705.jpg" class="image-item disN" />

<img src="https://webimg.quanjing.com/Recommend/1558458860095.jpg" class="image-item disN" />

<img src="https://webimg.quanjing.com/Recommend/1558458906986.jpg" class="image-item disN" />

<img src="https://webimg.quanjing.com/Recommend/1558458916877.jpg" class="image-item disN" />

<!--方式二:通过ajax异步请求资源,缺点:存在跨域问题-->

<script>

//ajax四个步骤

function createXHR(){

var xhr;

try{

xhr = new XMLHttpRequest();

}catch(e){

try{

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}catch(e){

try{

xhr = new ActiveObject("Msxml2.XMLHTTP");

}catch(e){

alert("浏览器太老,不能使用ajax");

}

}

}

return xhr;

}

 

// 1. 创建XMLHttpRequest对象

var xhr = createXHR();

xhr.responseType = "blob";

// 2. 调用open方法获取跟服务器的连接{{ 第一个参数,请求方式:GET|POST,第二个参数,请求路径:URL,第三个参数,是否异步请求(async):true|false }}

xhr.open('GET','http://127.0.0.1:5500/0.jpg',true);

// 3. 调用send方法, 向服务器发起请求

// 如果是post请求, 那么需要在send方法中带请求参数

// 如果是get请求, 那么参数为null

xhr.send(null);

// 4. 注册一个监听器

/*

不断地去监听请求的过程返回的一个状态码

 

在这个时候我们只需要关注readyState == 4的情况,这个时候说明服务器完成了响应

我们还需要关注另外一个状态码 status是服务器响应过来的, 需要status == 200

*/

 

xhr.onreadystatechange = function () {

if (xhr.readyState==4 && xhr.status == 200) {

//此时说明响应完毕 我们可以通过xml.responseText 来获取服务器的响应内容(文本内容)

// $("").html(xhr.responseText);

 

var blob = this.response;

var img = document.createElement("img");

img.onload = function(e) {

window.URL.revokeObjectURL(img.src);

};

img.classList.add('image-item');

img.src = window.URL.createObjectURL(blob);

var pre = document.getElementById('preload');

pre.appendChild(img);

}

};

</script>

 

<!--方式三:通过preload.js预加载(其实只是综合前两种)-->

<script src="https://cdn.bootcss.com/PreloadJS/1.0.1/preloadjs.min.js"></script>

<script>

var queue = new createjs.LoadQueue();

queue.on("complete", handleComplete, this);

queue.loadManifest([

{id: "myImage", src:"http://127.0.0.1:5500/11.jpg"}

]);

function handleComplete() {

var image = queue.getResult("myImage");

image.classList.add('image-item');

var pre = document.getElementById('preload');

pre.appendChild(image);

}

</script>

</div>

</body>

 

</html>

 

效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章