是否可以在没有服务器往返的情况下更新地址栏?

时间:2011-12-23 18:25:08

标签: javascript html css asp.net-mvc-3 html5

我在CSS中使用了一个树形视图,当用户点击树视图上的文件夹时,我想更新地址栏中的URL,而不会导致服务器往返。

HTML看起来有点像这样: -

<ol>
    <li>
        <a href="www.example.com/blah?id=12345">Folder</a>
        <ol>
            <li>Child</li>
        </ol
    </li>
<ol>

CSS我已经处理了文件夹的扩展,但是我想更新地址栏的URL,这样我就可以深层链接到特定的文件夹,但是从代码的角度来看,没有必要去往服务器 有没有办法实现这个?我有一种感觉,这可能是不可能的,因为潜在的网络钓鱼?

我正在使用HTML5,CSS2 / 3,jquery和ASP.NET MVC3

2 个答案:

答案 0 :(得分:5)

HTML5添加了一个历史记录API,允许您在现代浏览器中使用history.pushState()来更新网址。出于安全原因,您被限制在同一个域中。

在IE10之前,IE不支持此功能。 Firefox,Safari,Opera和Chrome都实现了它。

答案 1 :(得分:4)

可以使用HTML 5历史记录API,就像在gawker网站和github上一样。但条件是两个页面都来自同一台服务器。就像你可以改变地址:

http://www.exemple.com/page1.html

为:

http://www.exemple.com/page2.html

使用history.replaceState功能。它并未在所有浏览器(caniuse)中得到广泛支持。你最好的选择是使用history.js