윈도우 popstate 이벤트에 바인드하는 AJAX 호출이 있습니다. 그것은 쿼리 문자열에서 인수를 파싱한다는 점을 제외하면 작동합니다. 문제는 페이지가로드 될 때 Ajax 호출이 창에 바인딩되므로 URL이 변할 때 내 인수가 변경되지 않는다는 것입니다. 리스너를 창에 추가하면 Ajax 호출을 바인딩하는 대신 실행할 수 있다면 매번 쿼리 문자열을 다시 구문 분석 할 수 있습니다.drupal에서 bind() 대신 ajax 호출을 실행하십시오.
예를 들어 페이지가 domain.com?x=1 & y = 2를로드하면 내 호출은 x = 1 및 y = 2를 보냅니다. 그러나 popstate가 발발하고 domain.com? x = 1 & y = 2 & z = 3이되면 x = 1과 y = 2를 보냅니다.
여기 내 전화 뭔가이 일을하고 무슨 생각
var ajax_path = Drupal.settings.views.ajax_path;
$.each(Drupal.settings.views.ajaxViews, function (i, settings) {
var view = '.facetapi-facetapi-links';
element_settings = {
url: ajax_path,
submit: settings,
setClick: false,
event: 'popstate',
selector: view,
progress: { type: 'throbber' }
};
var viewData = {};
$.extend(
viewData,
settings,
Drupal.Views.parseQueryString(document.URL),
Drupal.Views.parseViewArgs(document.URL, settings.view_base_path)
);
$.extend(viewData, Drupal.Views.parseViewArgs(document.URL, settings.view_base_path));
element_settings.submit = viewData;
var ajax = new Drupal.ajax(false, window, element_settings);
});
,하지만 난 방법을 잘 모르겠어요. 또는 Drupal.ajax.prototype.beforeSendend를 사용하는 것이 가능합니까?
window.addEventListener("popstate", function(e) {
//execute ajax here so it reparses document.url
}