用history.js重定向hashbang到url
redirect hashbang to url with history.js
我注意到history.js会自动更改
http://www.site.com/some/path#/other/path
http://www.site.com/other/path
在支持html5的浏览器中。这很好,但它实际上并没有将浏览器重定向到/other/path,它只是改变了地址栏中的url。我也需要它重定向。我试着用:
<script>
$(function() {
$(window).on('statechange', function() {
var State = History.getState();
console.log('state', State.url);
});
});
</script>
但是statechange事件从未发生…那么我怎么做重定向呢?
你需要依赖url来实现这一点,我们有很好的框架,比如backbone.js路由,甚至像history.js这样的插件
但是如果没有这个插件,你可以从url中获得哈希邦,并应用与它对应的列表的活动样式。
要做到这一点,HTML必须是这样的,
<ul id="ulid" class="">
<li class="">
<a href="#tab=one" id="one" class="active">text1</a>
</li>
<li>
<a href="#tab=two" id="two" class="">text2</a>
</li>
<li>
<a href="#tab=three" id="three" class="">text3</a>
</li>
<li>
<a href="#tab=four" id="four" class="">text4</a>
</li>
<li>
<a href="#tab=five" id="five" class="">text5</a>
</li>
<li>
<a href="#tab=six" id="six" class="">text6</a>
</li>
</ul>
活动类css可以是:.active{background-color: red;}
获取hash bang的一个简短的附加代码是:
function parseHashBangArgs(aURL) {
aURL = aURL || window.location.href;
var vars = {};
var hashes = aURL.slice(aURL.indexOf('#') + 1).split('&');
for(var i = 0; i < hashes.length; i++) {
var hash = hashes[i].split('=');
if(hash.length > 1) {
vars[hash[0]] = hash[1];
} else {
vars[hash[0]] = null;
}
}
return vars;
}
然后你可以在页面加载
时运行这段代码$('ul#ulid li a').click(function(){
$('li a').removeClass('active');
$(this).addClass('active');
});
var selectedTab = parseHashBangArgs(window.location.href).tab;
if(selectedTab){
$('li a').removeClass('active');
$('#'+selectedTab).addClass('active');
}
完成了!
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- 我想使用hashbang URL(blah.com/#!/thingtoload)动态加载页面内容(在DIV中),我有j
- hashbang之后的角度替换url
- AngularJS hashbang模式复制URL路径
- 你应该在AJAX内容网站上使用hashbang,还是只使用普通的URL
- 简单的ajaxify,没有hash或hashbang url
- 为hashbang URL验证noscript网站内容
- 在URL中重写hashbang
- AngularJS: Hashbang URL在完全刷新时不断追加到自身
- Url的改变没有hashbang和fragments
- 将谷歌索引正确的URL为hashbang/escaped_fragment内容
- 在刷新时从angularjs的URL中删除hashbang
- Angular JS Hashbang URL's malformed
- AngularJS应用中的Svg clipPath, url为hashbang模式
- 在URL中使用锚点/hashbang来触发加载时的函数
- 使用hashbang方法使用AngularJS提取URL参数
- 角度$location.如果用户提交带有hashbang的URL,如何在html5Mode(true)中解析查询字符串
- 用history.js重定向hashbang到url