Javascript “我可以禁用”吗;“后退”;按钮浏览器功能?

Javascript “我可以禁用”吗;“后退”;按钮浏览器功能?,javascript,jquery,onbeforeunload,Javascript,Jquery,Onbeforeunload,我想更改“后退”浏览器按钮的功能。我试过这个: window.onbeforeunload = function() { show_page(last_page, 'not-search'); } 它在某种程度上起作用:它调用函数,但浏览器仍会导航到上一页。有解决办法吗 编辑 我需要这样做: 索引(ajax内容)---用户单击--->其他ajax内容(我称之为内容) 内容-->返回按钮-->上一个索引内容,用于阻止用户转到上一页 在页面底部添加此js <script langu

我想更改“后退”浏览器按钮的功能。我试过这个:

window.onbeforeunload = function() {
    show_page(last_page, 'not-search'); 
}
它在某种程度上起作用:它调用函数,但浏览器仍会导航到上一页。有解决办法吗

编辑 我需要这样做:

索引(ajax内容)---用户单击--->其他ajax内容(我称之为内容)

内容-->返回按钮-->上一个索引内容

,用于阻止用户转到上一页

在页面底部添加此js

<script language="text/javascript">
window.history.forward();
</script>

window.history.forward();

阻止用户转到上一页

在页面底部添加此js

<script language="text/javascript">
window.history.forward();
</script>

window.history.forward();
看看这个:

引自上述网站:

答案很简单-你不能

更长的回答-您不能完全取消用户返回前一位置的功能,尽管您可以使其更难

将更新添加到问题后:

如果使用Ajax操作页面内容,则可以手动更新浏览器的历史记录。您还应该考虑在URL结尾添加哈希。< /P> 有关历史API的更多信息:

请查看以下内容:

引自上述网站:

答案很简单-你不能

更长的回答-您不能完全取消用户返回前一位置的功能,尽管您可以使其更难

将更新添加到问题后:

如果使用Ajax操作页面内容,则可以手动更新浏览器的历史记录。您还应该考虑在URL结尾添加哈希。< /P>
有关历史API的详细信息:

在函数中返回一个字符串以警告用户并提供取消选项

window.onbeforeunload = function() {
    show_page(last_page, 'not-search'); 
    return "please do not use the back button";
}
完全致残既棘手又糟糕。以这种方式限制用户很容易被视为垃圾邮件或不想要的行为

编辑

在阅读了您的编辑之后,我建议您在使用ajax修改页面时使用
history.pushState
。这样,backbutton将导航到您想要的早期状态。请查看所需的所有函数的

当按下上一个按钮时,它将触发
window.onpopstate
功能,您可以在该功能中处理以加载正确的内容。见下例:

window.onpopstate = function(event) {
  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};

在函数中返回字符串以警告用户并提供取消选项

window.onbeforeunload = function() {
    show_page(last_page, 'not-search'); 
    return "please do not use the back button";
}
完全致残既棘手又糟糕。以这种方式限制用户很容易被视为垃圾邮件或不想要的行为

编辑

在阅读了您的编辑之后,我建议您在使用ajax修改页面时使用
history.pushState
。这样,backbutton将导航到您想要的早期状态。请查看所需的所有函数的

当按下上一个按钮时,它将触发
window.onpopstate
功能,您可以在该功能中处理以加载正确的内容。见下例:

window.onpopstate = function(event) {
  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};

可能重复的可能重复的我刚在看到你更新了你的问题后更新了我的答案。你可能想在URL中反映你页面的状态更改。您可以通过编程方式更改来归档(您可以使用侦听哈希更改)。或者,您也可以使用“可能重复”的“可能重复”的“我刚在看到您更新了问题后更新了我的答案”。您可能希望在URL中反映页面的状态更改。您可以通过编程方式更改来归档(您可以使用侦听哈希更改)。或者,您可以使用为什么在pageload上以编程方式向前导航(虽然还没有任何“肯定”的历史记录条目)会阻止向后导航?如果您按“后退”按钮,它将转到上一页,其中window.history.forward();将被执行,并且需要用户再次转发。这样你就不能通过浏览器返回了。如果没有正向历史记录,此代码将不会执行任何操作。此代码行仅在加载页面时执行一次,而不是在加载另一个页面或当前页面正在卸载时执行。为什么要在pageload上以编程方式向前导航(同时还不能有任何“正向”历史记录条目)阻止向后导航?如果按“后退”按钮,它将转到上一页,其中window.history.forward();将被执行,并且需要用户再次转发。这样你就不能通过浏览器返回了。如果没有正面的历史记录,此代码将不会执行任何操作。这行代码仅在页面加载时执行一次,而不是在另一个页面加载或当前页面正在卸载时执行。我不会向用户显示任何错误,我想让他转到ajax内容的上一个视图检查我的更新答案。我现在没有时间写代码,但它应该会给你一个指向正确方向的指针。我不会向用户显示任何错误,我想让他转到ajax内容的上一个视图检查我更新的答案。我现在没有时间写代码,但它应该会给你一个指向正确方向的指针。