나는 갤러리를 가지고있는 프로젝트를 가지고 있습니다. 갤러리가 작동하는 방식은 사용자가 이미지 목록을 만났고 각 이미지는 주어진 갤러리의 더 많은 이미지로 연결되는 "앨범"입니다. 현재 작업하고 있지만, 사용자가 선택한 갤러리로 이동 한 후 뒤로 버튼을 클릭하면 다시 앨범 목록으로 이동하지 않습니다. 예를 들어, 홈페이지의 경우 앨범 페이지를 클릭하고 갤러리를 엽니 다. 뒤로 버튼을 클릭하면 홈페이지로 돌아갑니다.pushState()를 추가하고 내 프로젝트에 popstate 추가
그래서이 문제를 해결하기 위해 히스토리 API를 사용하고 pushState와 popstate를 사용할 수 있습니다. 내 문제는 내가 그것을 작동시키지 못했고 주어진 스크립트에서 함수를 어디에 둘지 확실하지 않다는 것이다. 당신은 내가 사이트의 라이브 버전을 사용하고 싶은 경우
것은 내가 여기에 일하고 있어요 : Live Demo 여기
내 현재 스크립트가됩니다 :
(function(code) {
code(window.jQuery, window, document);
}(function($, window, document) {
$(function() {
initialize();
});
function initialize() {
$.getJSON('/assets/js/images.json', function(json) {
$.each(json.albums, function(i, item) {
var photos = item.photos,
name = item.name,
id = item.id;
showAlbums(photos, name, id);
});
});
}
function showAlbums(p, n, i) {
var albums = $('.albums'),
gallery = $('.gallery'),
album = $('#templates #album .thumb').clone(true),
thumbnail = album.find('.thumbnail'),
image = album.find('.image'),
caption = album.find('.caption h4');
thumbnail.attr('href', '#').attr('title', n).attr('data-url', i);
image.attr('src', p[0].href).attr('alt', n);
caption.html(n);
albums.append(album);
album.on('click', 'a', function(e) {
e.preventDefault();
albums.hide();
gallery.empty().show();
document.title = "Schultz | " + n;
$.each(p, function(i, item) {
var photo = item.href;
showGallery(photo, n);
});
});
}
function showGallery(p, n) {
var gallery = $('.gallery'),
images = $('#templates #gallery .thumb').clone(),
link = images.find('.thumbnail'),
image = images.find('.thumbnail img');
link.attr('href', p).attr('title', n).attr('data-gallery', '');
image.attr('src', p).attr('alt', n);
gallery.append(images);
}
}));
어떤 도움 감사합니다, 당신에게
감사합니다
여기서 전체 답변을 볼 시간은 없지만 앨범 클릭 핸들러를 리팩토링하여 'showAlbum' 기능을 사용하십시오. 범위의 지역 변수에 의존하는 대신 JSON 데이터에서 앨범의 색인이나 ID를 받아들입니다.이 값은 나중에 init에서 사용하는 대신 참조를 유지해야하므로 나중에 사용할 수 있습니다. 앨범을 클릭하면''? id = '+ id''와''showAlbum (id)''가능성이있는 새로운 URL을 pushState하여 뷰를로드합니다. 그런 다음'window.onpopstate'에서 당신은 쿼리 문자열과'showAlbum (id)'에서'id'를 가져올 것입니다. – numbers1311407
물론 검색어 문자열에 'id'가 없으면 갤러리를 숨기고 '앨범'(사용자가 갤러리보기에서 '뒤로'를 클릭하는 경우)를 표시합니다. UI를 사용하면 개별 갤러리에서 "앨범으로 돌아 가기"버튼을 추가하는 것이 좋습니다. 예를 들어 사용자가 갤러리보기에서 브라우저를 열면 앨범으로 돌아갈 수있는 방법이없는 것처럼 역사를 망칠 때마다 이러한 일은 특히 중요합니다. – numbers1311407
도움을 주셔서 감사 드리며 내가 제안한 것을 시도해 보겠습니다. 일단 내가 푸시 스테이트를 파악하면, 앨범 버튼에 백을 추가하기 만하면됩니다. – Su7ech