我正在尝试用JavaScript编写单页Web应用程序。期望的行为:
http://myapp.example.com
(主页)或该域的任何其他URL时,他们的浏览器会下载1个大型HTML文件(以及相关的JS / CSS /图像文件等) )。 - &GT; 如此大的前期下载 <div>
个元素,每个元素代表不同的“页面”;在任何给定时间只会显示1个“页面”div 我想知道如何做到这一点。我非常喜欢基于jQuery的东西而不是尝试写一些本土的东西。但是如果我必须自己编写这段代码,那么给出以下1 HTML文件的一般结构:
<html>
<head> ... </head>
<body>
<div id="home" class="page">
<!-- Content for home page, say http://myapp.example.com/#home. -->
</div>
<div id="about" class="page">
<!-- Content for About page, say http://myapp.example.com/#about. -->
</div>
<div id="contact" class="page">
<!-- Content for Contact page, say http://myapp.example.com/#contact. -->
</div>
<!-- Etc. for all other "pages" -->
</body>
</html>
我如何:
答案 0 :(得分:2)
您可以使用并设置window.location.hash
并将该值用于$("#yourDivId").show()
和$("#yourDivId").hide()
您的div。
在onload
上,$("#yourDivId").show()
可以$("#yourDivId").hide()
请求(或默认情况下,如果没有请求)div,{{1}}其他div。
在每个链接上,直接更改哈希并将请求的div设置为可见。或者设置一个计时器,检查一个间隔的哈希,看看哈希值是否已经改变。 (没有本机onhashchange事件。)
答案 1 :(得分:2)
我认为你应该在开始时隐藏每一个div。
$(div#page).hide();
然后,您可以使用以下方法检查当前的URl:
var pathname = window.location.pathname;
每次用户更改URL时:首先隐藏每个div,然后检查并显示所需的div。
答案 2 :(得分:0)
这就是单页面应用程序框架存在的原因。我认为值得学习一些,比如AngularJS或BackboneJS。
答案 3 :(得分:0)
如果您想滥用浏览器历史记录,建议您在history.pushState()
上阅读this article。的: - )强>