[JQUERY] 자바 스크립트 / jQuery를 사용하여 프리로드 이미지에 결정적인 가장 좋은 방법은?
JQUERY자바 스크립트 / jQuery를 사용하여 프리로드 이미지에 결정적인 가장 좋은 방법은?
해결법
-
1.불행하게도, 그 목적에 따라 달라집니다. 당신이 스타일을 목적으로 이미지를 사용하려는 경우, 당신의 가장 좋은 방법은 스프라이트를 사용하는 것입니다. http://www.alistapart.com/articles/sprites2
불행하게도, 그 목적에 따라 달라집니다. 당신이 스타일을 목적으로 이미지를 사용하려는 경우, 당신의 가장 좋은 방법은 스프라이트를 사용하는 것입니다. http://www.alistapart.com/articles/sprites2
그러나, 당신은 태그, 당신은 할 수 있습니다 미리로드를로의 이미지를 사용하려면
function preload(sources) { var images = []; for (i = 0, length = sources.length; i < length; ++i) { images[i] = new Image(); images[i].src = sources[i]; } }
(수정 된 소스 자바 스크립트에서 여러 개의 이미지를 미리로드하는 가장 좋은 방법은 무엇에서 가져온?)
새 이미지 ()를 사용하여 DOM 방법하지만 큐에 추가됩니다 지정된 이미지에 대한 새로운 요청을 사용하는 비용을 포함하지 않습니다. 이미지이기 때문에,이 시점에서, 실제로 페이지에 추가되지, 반군 재 렌더링이 없습니다. 나는 페이지의 끝 (스크립트의 모든이어야하는 가능) 더 중요한 요소를 들고 것을 방지하기 위해이 추가 그러나 추천 할 것입니다.
편집 : 편집은 별도의 이미지 오브젝트가 제대로 작동하려면 필요하다는 지적 아주 제대로 의견을 반영합니다. 감사합니다, 더 밀접하게 확인하지 않는 내 나쁜.
EDIT2가 : 재사용이 더 분명하게 편집
편집 3 (3 년 이상) :
브라우저가 보이지 않는 이미지를 처리하는 방법의 변화로 인해 : 사전 로딩에 대한 새로운 접근 방식 (화면이 답변에서와 같이 없음을하거나, 문서에 추가되지 않음) 바람직하다.
당신은 이미지의 조기 검색을 강제로 Ajax 요청을 사용할 수 있습니다. 예를 들어, jQuery를 사용하여 :
jQuery.get(source);
또는 이전 예제의 맥락에서, 당신은 할 수 있습니다 :
function preload(sources) { jQuery.each(sources, function(i,source) { jQuery.get(source); }); }
이-이기 때문에 괜찮 스프라이트의 경우에는 적용되지 않습니다. 이것은 단지 이미지들이 처음에 표시되지 않기 때문에로드되지 않은 이미지 사진 갤러리 또는 슬라이더 / 회전 목마 같은 것들입니다.
또한,이 방법은 (AJAX는 통상 화상 데이터를 검색하는 데 사용되지 않는다) IE에 대한 작업을하지 않는다.
-
2.스프라이트
스프라이트
다른 언급으로 그 인 것을 만들어으로, 스프라이트의 작품을 아주 잘하는 이유는 다양하지만, 그것은 좋은으로하지 않습니다.
불규칙한 모양 다루기 까다로운하지만입니다. 새로운 하나에 모든 새로운 이미지를 결합하는 것은 또 다른 골칫거리입니다.
태그를 사용하여 낮은 잭 접근
당신이 가장 확실한 해결책을 찾고 있다면 당신은 내가 여전히 선호 낮은 잭 접근 방식으로 가야한다. 문서의 끝 부분에있는 이미지에 대한 링크를 만들고 1x1 픽셀의 폭과 높이를 설정하고 추가로 숨겨진 DIV에 넣어. 가 페이지의 끝 부분에있는 경우, 그들은 다른 콘텐츠 후로드됩니다.
-
3.월으로 방법 2013 아무도 여기 그래서 여기 대신, 테스트 및 크롬 25, 파이어 폭스 (18) 용도 jQuery를 부하 이벤트 단점 해결하려면이 플러그인 작업 무슨 짓을했는지, 나를 위해 일하지 설명했다
월으로 방법 2013 아무도 여기 그래서 여기 대신, 테스트 및 크롬 25, 파이어 폭스 (18) 용도 jQuery를 부하 이벤트 단점 해결하려면이 플러그인 작업 무슨 짓을했는지, 나를 위해 일하지 설명했다
function preload(sources, callback) { if(sources.length) { var preloaderDiv = $('<div style="display: none;"></div>').prependTo(document.body); $.each(sources, function(i,source) { $("<img/>").attr("src", source).appendTo(preloaderDiv); if(i == (sources.length-1)) { $(preloaderDiv).imagesLoaded(function() { $(this).remove(); if(callback) callback(); }); } }); } else { if(callback) callback(); } }
용법:
preload(['/img/a.png', '/img/b.png', '/img/c.png'], function() { console.log("done"); });
캐시가 비활성화 된 경우 당신이 그렇게 마음에 계속, 개발자 도구가 열려 때 크롬에 기본적으로 인 혼합 된 결과를 얻을 수 있습니다.
-
4.제 생각에는, 사용하는 여러 부분 XMLHttpRequest의 다음과 같은 년에서 선호하는 솔루션이 될 것입니다 일부 도서관 소개했다. 그러나 IE
제 생각에는, 사용하는 여러 부분 XMLHttpRequest의 다음과 같은 년에서 선호하는 솔루션이 될 것입니다 일부 도서관 소개했다. 그러나 IE
-
5.시간이 오래 나는 아직도 이미지를 사전로드에 관심이 얼마나 많은 사람들이 몰라 그래서 전에서였다.
시간이 오래 나는 아직도 이미지를 사전로드에 관심이 얼마나 많은 사람들이 몰라 그래서 전에서였다.
내 솔루션은 훨씬 더 간단했다.
난 그냥 CSS를 사용했다.
#hidden_preload { height: 1px; left: -20000px; position: absolute; top: -20000px; width: 1px; }
-
6.이로드 된 후 여기에 이미지에 페이드 내 간단한 솔루션을 간다.
이로드 된 후 여기에 이미지에 페이드 내 간단한 솔루션을 간다.
function preloadImage(_imgUrl, _container){ var image = new Image(); image.src = _imgUrl; image.onload = function(){ $(_container).fadeTo(500, 1); }; }
-
7.내 사용 사례를 들어 나는 프리로드에 싶다고 전체 화면 이미지 회전 목마를했다. 이미지가 순서대로 표시하고 부하에 몇 초 각 걸릴 수 있기 때문에, 내가 순차적 순서로로드하는 것이 중요합니다.
내 사용 사례를 들어 나는 프리로드에 싶다고 전체 화면 이미지 회전 목마를했다. 이미지가 순서대로 표시하고 부하에 몇 초 각 걸릴 수 있기 때문에, 내가 순차적 순서로로드하는 것이 중요합니다.
이를 위해 나는 비동기 라이브러리의 폭포를 () 사용 방법 (https://github.com/caolan/async#waterfall)
// Preload all images in the carousel in order. image_preload_array = []; $('div.carousel-image').each(function(){ var url = $(this).data('image-url'); image_preload_array.push(function(callback) { var $img = $('<img/>') $img.load(function() { callback(null); })[0].src = url; }); }); async.waterfall(image_preload_array);
기능의 배열을 만들어이 작업은, 각각의 기능은 어레이 내의 다음 함수를 호출하기 위해 실행하는 데 필요한 매개 변수 콜백 ()를 통과한다. 콜백의 최초의 파라미터 ()는 비 - 널 값이 제공되는 경우 우리가 널마다 통과되도록 상기 시퀀스를 종료한다 에러 메시지이다.
-
8.이것 좀 봐:
이것 좀 봐:
http://www.mattfarina.com/2007/02/01/preloading_images_with_jquery
SO에 대한 질문을 관련 :
JQuery와 숨겨진 프리로드
from https://stackoverflow.com/questions/901677/the-definitive-best-way-to-preload-images-using-javascript-jquery by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 인라인을 적용 및 / 또는 외부 CSS는 jQuery를 동적으로로드하는 방법 (0) | 2020.10.25 |
---|---|
[JQUERY] 속성 '데이터 정렬'을 기반으로 jQuery를에 정렬 된 div? (0) | 2020.10.25 |
[JQUERY] 파이어 폭스 확장에 jQuery를 사용하는 방법 (0) | 2020.10.25 |
[JQUERY] 키 값을 기준으로 배열의 자바 스크립트의 발견 및 제거 개체 (0) | 2020.10.25 |
[JQUERY] jQuery를에 CSV로 내보내기 (0) | 2020.10.25 |