更改网址并保留div

时间:2014-02-15 19:25:11

标签: javascript html url browser-history

我看到了一些非常不同的东西,我不知道该怎么做。

网站Rdio.com当您点击任何链接时,网址完全改变(不是#)。 但是页面底部的div(正在播放歌曲)不会重新加载。

他们是如何做到的?

3 个答案:

答案 0 :(得分:2)

使用historypushState方法,使用JavaScript的新popState对象完成此操作。另请参阅http://diveintohtml5.info/history.html

答案 1 :(得分:2)

您可以使用ajax加载执行此操作,然后您可以设置浏览器历史记录。 像这样:

/*clickhandler Hauptmenü*/
$('#main-nav a').on('click', function(e){
    var href = $(this).attr('href'),
        title = $(this).text();
    loadContent(href,title);
    /*manipulate Browser history */
    history.pushState({path: href, titel: title}, $(this).attr('href'), 'http://www.example.com/'+$(this).attr('href'));
    e.preventDefault();
});

window.addEventListener('popstate', function(e){
    loadContent(e.state.path, e.state.titel);
}, false);

function loadContent(href,title){
    var href = href,
        container = $('#main-cont');
        container.fadeOut(100, function(){
            container.load( href +' #main-cont', function(){
                container.fadeIn(200);
                $('title').replaceWith('<title>' + title + '</title>');
            });         
        });
};

我希望这能回答你的问题。

答案 2 :(得分:0)

如果我错了,请纠正我 - 考虑到我没有去过他们的网站 - 但我相信他们会使用某种类型的iframe - 考虑到他们将不得不重新加载该div,如果他们不这样做