gpt4 book ai didi

jquery - 当用户单击后退或前进按钮时运行 jQuery ajax 函数

转载 作者:行者123 更新时间:2023-12-01 02:23:44 24 4
gpt4 key购买 nike

我有以下示例,当用户单击导航线时,它会使用 AJAX 加载一些内容,并使用 jquery History.js https://github.com/browserstate/History.js/ 更新 url 和标题。用于执行一些 HTML5 历史记录的插件。

 ajaxNav: function () {

$('#uiTabs li a, .ajax').live('click', function (e) {

e.preventDefault();

$('<div id="uiLoader"></div>').appendTo('body').hide().fadeIn();

var url = $(this).attr('href');

var bodyid = $(this).data('body');

$.ajax({
url: url,
timeout: 5000,
success: function (responseHtml) {

isAjaxNav = true;

var content = $(responseHtml).find('#ajax-nav-html');

$('.uiContent > .uiPadding').html(content.hide().fadeIn('slow'));

History.pushState(null, $(responseHtml).filter('title').text(), url);

$('body').attr('id', bodyid);
$('#uiLoader').fadeOut(function () { $('#uiLoader').remove() });

},
error: function (jqXHR, textStatus, errorThrown) {
if (textStatus == 'timeout') {
uiModal.errorTimeoutModal(jqXHR, textStatus, errorThrown);
} else if (jqXHR.status == "500") {
uiModal.error500Modal(jqXHR, textStatus, errorThrown);
} else if (jqXHR.status == "404") {
uiModal.error404Modal(jqXHR, textStatus, errorThrown);
} else {
uiModal.errorUnknownModal(jqXHR, textStatus, errorThrown);
}

$('#uiLoader').fadeOut(function () { $('#uiLoader').remove() });

}
});

});

},

但是,当用户单击后退或前进按钮时,它会更改 url 和标题(因为插件支持此功能),但内容不会更改!我如何检测到这一点,以便我可以使用例如 $('location').att('pathname'); 读取新的 url,然后执行更多 ajax?

例如:

//IF back button or forward button clicked or relevant function e.g backspace
$(<!-- ? -->).click(function() {

// Get the current url when the back or forward button was clicked
var url = $('location').att('pathname');

$.ajax({
url: url,
timeout: 5000,
success: function (responseHtml) {

isAjaxNav = true;

var content = $(responseHtml).find('#ajax-nav-html');

$('.uiContent > .uiPadding').html(content.hide().fadeIn('slow'));

History.pushState(null, $(responseHtml).filter('title').text(), url);

$('body').attr('id', bodyid);
$('#uiLoader').fadeOut(function () { $('#uiLoader').remove() });

},
error: function (jqXHR, textStatus, errorThrown) {
if (textStatus == 'timeout') {
uiModal.errorTimeoutModal(jqXHR, textStatus, errorThrown);
} else if (jqXHR.status == "500") {
uiModal.error500Modal(jqXHR, textStatus, errorThrown);
} else if (jqXHR.status == "404") {
uiModal.error404Modal(jqXHR, textStatus, errorThrown);
} else {
uiModal.errorUnknownModal(jqXHR, textStatus, errorThrown);
}

$('#uiLoader').fadeOut(function () { $('#uiLoader').remove() });

}
});
});

最佳答案

您需要附加到 window.onpopstate 事件:

$(window).on("popstate", function (evt) { // use bind() for jQuery < 1.7
/* ... */
});

Working demo: http://jsfiddle.net/AndyE/CZwQB/ (uses DOM methods instead of jQuery)

关于jquery - 当用户单击后退或前进按钮时运行 jQuery ajax 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8080151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com