javascript - 在我使用 javascript + 假超链接隐藏当前内容并显示新内容的页面上启用 "Back"

标签 javascript html browser navigation

我正在创建一个页面,我希望用户在其中单击链接,当他们单击该链接时,该页面的当前内容将被新内容替换(实际上不会留下相同的物理 HTML 页面)。

我使用以下 JavaScript 来执行此操作:

function ShowForm() {
    var ele = document.getElementById("Page1");
    ele.style.display = "none";
    var ele = document.getElementById("Page2");
    ele.style.display = "block";
}

HTML:

<div id="Page1">
    Fill out the following <a href="javascript:Showform();">form</a>.
</div>
<div id="Page2" style="display:hidden;">
    Form
</div>

这非常有效,只是因为它位于同一页面上,所以浏览器上的后退按钮不起作用。这会让用户感到困惑,因为他们不知道内容位于同一个 html 页面上。

有没有办法允许后退按钮在这种设置中工作,点击后退按钮会将他们带回 Page1 内容?

提前致谢!

最佳答案

您要做的不仅仅是通过更改哈希来更改历史堆栈,您还需要让您的应用程序知道按下的后退/前进按钮。有几种方法可以做到这一点。 window.onhashchange在大多数浏览器中都会触发,但没有完整的支持,因此不能单独依赖它。

更简单的方法是获取一个允许通过 AJAX 应用程序进行历史跟踪的插件。您可能没有使用 AJAX,但原理是相同的,您想要跟踪页面的状态并允许导航按钮遵循该流程。

尝试这些插件:
http://www.overset.com/2008/06/18/jquery-history-plugin/
http://github.com/tkyk/jquery-history-plugin

关于javascript - 在我使用 javascript + 假超链接隐藏当前内容并显示新内容的页面上启用 "Back",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3687846/

相关文章:

javascript - 编译时出现 graphQL 错误

css - 浏览器无法访问 CSS

html - 为什么 q 元素中的前导空格与其他内联元素的处理方式不同?

javascript - 将鼠标悬停在复选框上时,为不同的 div 设置动画

javascript - 使用 Javascript/Jquery 动态添加占位符

javascript - 左右箭头键的按键代码是什么?

javascript - 如何使用延迟效果过渡不同的背景颜色

html - 在 Jquery UI 选择菜单上使用 iOS 键盘移动

javascript - stopImmediatePropagation 在被调用后仍在传播

java - 如何通过java点击按钮?