我正在开发一个web应用程序。 在这里面我有一个名为类部分,每次用户点击其中一个类别的更新面板加载相应的内容。
用户点击该类别后我想在浏览器的地址栏中的URL,从改变
www.mysite.com/products
喜欢的东西
www.mysite.com/products/{selectedCat}
而无需刷新页面。
是否有某种的JavaScript API的,我可以用它来实现这一目标?
我正在开发一个web应用程序。 在这里面我有一个名为类部分,每次用户点击其中一个类别的更新面板加载相应的内容。
用户点击该类别后我想在浏览器的地址栏中的URL,从改变
www.mysite.com/products
喜欢的东西
www.mysite.com/products/{selectedCat}
而无需刷新页面。
是否有某种的JavaScript API的,我可以用它来实现这一目标?
随着HTML5可以修改URL无需重新加载:
如果你想在浏览器的历史一个新的职位(即后退按钮将工作)
window.history.pushState('Object', 'Title', '/new-url');
如果你只是想改变URL,而不能回去
window.history.replaceState('Object', 'Title', '/another-new-url');
该对象可以被用于导航AJAX:
window.history.pushState({ id: 35 }, 'Viewing item #35', '/item/35');
window.onpopstate = function (e) {
var id = e.state.id;
load_item(id);
};
在这里阅读更多: http://www.w3.org/TR/html5-author/history.html
一个后备sollution: https://github.com/browserstate/history.js
要添加到什么家伙已经说过编辑window.location.hash属性来匹配您的onclick功能,你想要的网址。
window.location.hash = 'category-name'; // address bar would become http://example.com/#category-name
我相信直接操纵地址栏到一个完全不同的URL没有移动到该网址是不允许出于安全原因,如果你喜欢它是
www.mysite.com/products/#{selectedCat}
即在同一页内的锚链接风格再看看到各种历史/“返回”按钮的脚本,现在存在于大多数JavaScript库。
更新面板的提及使我使用的是asp.net,在这种情况下,asp.net AJAX历史控制是一个良好的开端猜测
我不认为这是可能的(至少改变一个完全不同的地址),因为这将是对地址栏的直观误用,并能促进网络钓鱼攻击。
这不能做你说的方式。 通过somej.net建议的方法是你可以得到的最接近。 它实际上是在AJAX年龄非常普遍的做法。 即使Gmail使用此。
“window.location.hash”
通过sanchothefat的建议应该是唯一这样做的方式。 因为我已经看到了这个功能的所有地方,它是在#后的URL所有的时间。