我如何让一个JavaScript动作对当前页面有一些影响,但也会改变浏览器中的URL,这样当用户点击重新加载或书签时,就会使用新的URL ?
如果后退按钮可以重新加载原始URL,那就太好了。
我试图在URL中记录JavaScript状态。
我如何让一个JavaScript动作对当前页面有一些影响,但也会改变浏览器中的URL,这样当用户点击重新加载或书签时,就会使用新的URL ?
如果后退按钮可以重新加载原始URL,那就太好了。
我试图在URL中记录JavaScript状态。
当前回答
Facebook的图片库在URL中使用#散列来实现这一点。下面是一些url示例:
在点击“下一步”之前:
/photo.php?fbid=496429237507&set=a.218088072507.133423.681812507&pid=5887027&id=681812507
点击“下一步”后:
/photo.php?fbid=496429237507&set=a.218088072507.133423.681812507&pid=5887027&id=681812507#!/photo.php?fbid=496435457507&set=a.218088072507.133423.681812507&pid=5887085&id=681812507
注意,新URL后面紧跟着一个散列(#!)。
其他回答
我成功地做到了:
location.hash="myValue";
它只是将#myValue添加到当前URL。如果需要在page Load上触发事件,可以使用相同的位置。哈希来检查相关的值。只要记住从location返回的值中删除#即可。散列。
var articleId = window.location.hash.replace("#","");
什么是为我工作是- history.replaceState()函数这是如下-
history.replaceState(data,"Title of page"[,'url-of-the-page']);
这将不会重新加载页面,你可以使用javascript的事件
我的代码是:
//change address bar
function setLocation(curLoc){
try {
history.pushState(null, null, curLoc);
return false;
} catch(e) {}
location.hash = '#' + curLoc;
}
和行动:
setLocation('http://example.com/your-url-here');
和示例
$(document).ready(function(){
$('nav li a').on('click', function(){
if($(this).hasClass('active')) {
} else {
setLocation($(this).attr('href'));
}
return false;
});
});
这就是全部:)
Facebook的图片库在URL中使用#散列来实现这一点。下面是一些url示例:
在点击“下一步”之前:
/photo.php?fbid=496429237507&set=a.218088072507.133423.681812507&pid=5887027&id=681812507
点击“下一步”后:
/photo.php?fbid=496429237507&set=a.218088072507.133423.681812507&pid=5887027&id=681812507#!/photo.php?fbid=496435457507&set=a.218088072507.133423.681812507&pid=5887085&id=681812507
注意,新URL后面紧跟着一个散列(#!)。
有一个Yahoo YUI组件(浏览器历史记录管理器)可以处理这个问题:http://developer.yahoo.com/yui/history/