이미지 갤러리이지만 많은 이미지가있는 응용 프로그램을 작성하고 있습니다 (문서 아카이브 탐색 용). 기본적으로 응용 프로그램이 수행합니다jquery Ajax 요청 및 구문 분석 캐시하는 방법
- 디스플레이 이미지
- 디스플레이 "다음"링크는 왼쪽 첫 번째 이미지
이전 및 다음 링크의 권리는 XML에서 검색 "이전"과 순서에있는 모든 심상을 목록으로 만드는 파일; 각 세트에는 약 1000-2000 개의 이미지가 있습니다 (세트 당 하나의 XML 파일). 선행 및 다음 형제 요소를 찾아야하는 것을 피하기 위해 각 이전 이미지와 다음 이미지의 이름을 각 이미지의 특성으로 포함했습니다.
그래서 XML 파일은 기본적으로 :<list>
...
<image previous="ww.jpg" next="yy.jpg">xx.jpg</image>
<image previous="xx.jpg" next="zz.jpg">yy.jpg</image>
<image previous="yy.jpg" next="aa.jpg">zz.jpg</image>
...
</list>
무엇 내가 뭘하는 것은 이것이다 :
function display(img) {
var lookingfor = 'image:contains('+img+')';
$.ajax({
type: "GET",
url: "pns.xml",
dataType: "xml",
success: function(xml) {
$(xml).find(lookingfor).each(function(){
// display the actual image and the links from @previous and @next attributes
});
}
});
}
$(document).ready(function(){
var image = $.query.get('img');
display(image);
});
처음 페이지가로드 스크립트 :
- 가져 url 매개 변수 'img'에서 표시 할 이미지의 이름
- 로드 t 그는이 같은 파일에서
- 표시 이미지 이전 및 다음 이미지 지금까지
너무 좋아에
이전 또는 다음 이미지 링크는 다음과 같습니다
display('image_id');
내가 페이지를 다시로드 단순히 다시 '디스플레이'기능을 호출하지 않고 내가 다시 XML 파일을 얻을 수 없을 것으로 기대했다 하고, 다시 구문 분석 할 필요가 없습니다. 그러나 XML 파일은 'display'함수가 새로 호출 될 때마다 다시로드됩니다.
처음으로 페이지를로드 할 때 상당한 지연이 발생합니다. 각 이미지에 대해 동일한 지연이 느리고 매우 불쾌한 것처럼 보입니다.
나는 애플리케이션을 완벽하게 제어 할 수 있습니다. XML 파일보다 효율적인 매개 변수를 보유 할 수있는 효율적인 솔루션이 있다면. 그러나 응용 프로그램은 오프라인으로 작업해야하므로 이전/다음 이미지의 이름을 가져 오기 위해 서버를 쿼리 할 수 없습니다.
또한 : contains() 선택기를 사용하면 아마도 가장 빠른 방법이 아닙니다. 무엇이 더 좋을까요?
편집 : XML을 사용하고 외부에서로드하는 것이 분명히 최적 상태가 아니 었습니다. 훨씬 더 쉽고 간단한 접근법은 이미지 당 하나의 배열을 포함하는 큰 객체를 갖고이 객체를 한 번만로드하는 것입니다 (스크립트가 처음로드 될 때). 또 다른 방법은 로컬 스토리지/SQL 기능을 사용하는 것입니다. 이러한 도구를 제공하는 Google Gears를 사용해 보시기 바랍니다.
감사합니다. ajax 호출에 'async : false'를 추가하여 표시 작업을하기 전에 xml이 준비 될 때까지 대기합니다. 그렇지 않다면, imgXML은 display()가 처음으로 호출 될 때 항상 null이되고 (XML은 로딩이 완료되지 않았기 때문에) 아무런 이미지 나 링크도 표시되지 않습니다. – Bambax