Aze*_*der 5 html javascript html5-history
我看到许多网站(例如gitHub)更改了 html 内容并且URL没有刷新页面。
我找到了一种可能的方法来做到这一点HTML Histroy API。
这是代码。
超文本标记语言
<div class="container">
<div class="row">
<ul class="nav navbar-nav">
<li><a href="home.html" class="historyAPI">Home</a></li>
<li><a href="about.html" class="historyAPI">About</a></li>
<li><a href="contact.html" class="historyAPI">Contact</a></li>
</ul>
</div>
<div class="row">
<div class="col-md-6">
<div class="well">
Click on Links above to see history API usage using <code>pushState</code> method.
</div>
</div>
<div class="row">
<div class="jumbotron" id="contentHolder">
<h1>Home!</h1>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
首页.html
This is home page
Run Code Online (Sandbox Code Playgroud)
关于.html
This is about page
Run Code Online (Sandbox Code Playgroud)
联系方式.html
That one is content page
Run Code Online (Sandbox Code Playgroud)
脚本语言
<script type="text/javascript">
jQuery('document').ready(function(){
jQuery('.historyAPI').on('click', function(e){
e.preventDefault();
var href = $(this).attr('href');
// Getting Content
getContent(href, true);
jQuery('.historyAPI').removeClass('active');
$(this).addClass('active');
});
});
// Adding popstate event listener to handle browser back button
window.addEventListener("popstate", function(e) {
// Get State value using e.state
getContent(location.pathname, false);
});
function getContent(url, addEntry) {
$.get(url)
.done(function( data ) {
// Updating Content on Page
$('#contentHolder').html(data);
if(addEntry == true) {
// Add History Entry using pushState
history.pushState(null, null, url);
}
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
即使您在浏览器中后退或前进,此代码也可以正常工作。
但问题是,当您刷新页面时,它只显示正在刷新的文件。例如,如果刷新,about.html则仅显示以下内容:This is the about page。
与gitHub不同, 它无法显示完整的页面。正如您在 中看到的gitHub,即使您刷新页面,它也会显示与刷新之前相同的页面。
我怎样才能做到这一点?
谢谢...
| 归档时间: |
|
| 查看次数: |
4763 次 |
| 最近记录: |