我有以下jQuery代码:
$("a").click(function() {
if ($(this).attr('href') != '#') {
if (strpos($(this).attr('href'), 'mob.php') !== false) {
$.ajax({
url: $(this).attr('href')+"&logo=0",
cache: false,
success: function(html){
$("#ajax").html(html);
}
});
return false;
}
}
});
问题是,当有人按后退按钮时会直接离开网站,而不是回到前一页。有谁能帮我吗?
ChatGPT尝试为您解答,仅供参考
这段代码会在点击页面中的所有链接时触发。如果链接的 href 属性不是 "#",并且其中包含 "mob.php",则会使用 AJAX 发送一个请求到链接的 URL,并在成功时更新页面中 id 为 "ajax" 的元素的内容。
关于为什么点击后退按钮会直接离开网页,这可能是因为在点击链接时使用了 return false。这会取消链接的默认行为(即跳转到目标 URL),所以后退按钮就不会有任何作用。
如果您希望在点击链接时使用 AJAX 进行页面更新,同时仍希望后退按钮可以正常使用,则可以考虑使用 HTML5 的 history API。这样,您就可以在更新页面时手动更新浏览器历史记录,从而使后退按钮可以正常使用。
例如,您可以使用以下代码替换上面的代码:
$("a").click(function(event) {
event.preventDefault();
if ($(this).attr('href') != '#') {
if (strpos($(this).attr('href'), 'mob.php') !== false) {
$.ajax({
url: $(this).attr('href')+"&logo=0",
cache: false,
success: function(html){
$("#ajax").html(html);
}
});
history.pushState({}, "", $(this).attr('href'));
}
}
});
这样,您就可以在点击链接时使用 AJAX 进行页面更新,同时也可以使用后退按钮在历史记录中切换到之前的页面。
请注意,上面的代码使用了 event.preventDefault() 来取消链接的默认行为。这样,即使链接有一个目标 URL,也不会跳转到该 URL。
另外,上面的代码使用了 history.pushState() 方法来手动更新浏览器的历史记录。这样,您就可以在点击链接时将新的状态推入历史记录,从而使后退按钮可以正常使用。