我想更换一个没有页面刷新的网址.
我需要改变:
https://example.com/en/step1
Run Code Online (Sandbox Code Playgroud)
至
https://example.com/en/step2
Run Code Online (Sandbox Code Playgroud)
怎么做 ?
有人能指出我支持/不支持HTML5 History API的浏览器的兼容性图表吗?
规格:http://www.w3.org/TR/html5/history.html
教程:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
当您单击图像时,我想创建与Pinterest相同的效果:打开模态窗口但页面的URL也会更改.最后一部分至关重要:浏览器地址栏中的URL已更改,但我们仍然在后台看到原始页面内容(这就是为什么我称之为模态,即使它可能比这复杂得多).我理想地寻找一个jQuery解决方案.
[编辑]我应该补充一点,当然Pinterest行为不会破坏Back按钮,这也是至关重要的.
我刚刚发现了pjax,我发现它完全令人敬畏.如果我理解正确,它是AJAX,但没有它的问题(完全可降解,页面的URL和标题在使用时会发生变化,与搜索机器人兼容......).
但我很好奇它是如何工作的?如何更改浏览器中的URL,而无需更改页面...我在某处读到了你需要的Firefox 4,那是一个新的"网络"功能吗?
如何在不重定向的情况下更改get参数?
parent.location.search = "?after=20";
// ok that changes, but also redirect to the new page
Run Code Online (Sandbox Code Playgroud)
有解决方案吗 或者答案是否定的,如果不是,请写下大号.
我有使用history API和push/popstate在客户端进行路由的页面.这适用于所有现代浏览器.(node.js prerenderer将支持搜索引擎)
但是,我最近碰到了一个问题,IE不会在hashchange上激活popstate,而pushstate与url的工作正常,包括IE11.
例如,像这样......
$(document).on('click', 'a', function(e) {
e.preventDefault();
History.pushState({}, '', $(this).attr('href'));
});
Run Code Online (Sandbox Code Playgroud)
...正确地发射......
$(window).on('popstate', function() {
console.log('url changed');
});
Run Code Online (Sandbox Code Playgroud)
根据W3C规范,hashchange应该触发popstate,因为它正在改变当前的历史记录.但是,当我添加哈希链接(<a href="#hashchange">...),在IE上单击它时,什么都没有激发.:/
我不想做IE检测(因为现在有很多浏览器可能会陷入同样的厄运),而不是使用特征检测.但是,由于历史(popstate/pushstate)在其余部分工作得很好,我甚至无法检测到丢失的push/popstate上的问题......
if(!window.history || !window.history.pushState) { ...
Run Code Online (Sandbox Code Playgroud)
...而是使用hashchange代替.:/
有什么想法吗?
PS.作为奖励,使用jquery.history.js(jquery包装的history.js版本)和hashtag url将整个事情搞砸了.
http://localhost/routetest/index.html#/page1/1234
Run Code Online (Sandbox Code Playgroud)
变
http://localhost/page1/1234
Run Code Online (Sandbox Code Playgroud)
...... ??? :/
我有一个网页,用户可以通过AJAX显示条款和条件而无需重新加载页面.这本身就没有问题,但是,我也试图推动一个历史状态.
除了在IE中,这在大多数浏览器中都能正常工作.出于某些莫名其妙的原因,内容是通过AJAX加载的,但是,还会在上一页打开一个新选项卡.我怎样才能解决这个问题?
您可以在此网页(http://galaxy-battle.de)上查看示例,尝试点击"加入"框中的"T&C".
我想知道什么可能导致window.addEventListner('popstate', foo, false) window.attachEvent('onpopstate', foo)并且window.onpopstate=foo不会触发函数foo.我们有类似于此的代码,在生产中它不会触发,但在开发中它确实如此.是否可以通过JS禁用popstate事件或导致某种冲突或竞争条件发生?
PopStateEvent.js(完整列表,使用jQuery 1.9.1):
$(window).bind('popstate', function () { alert("Pop state event received!"); });
Run Code Online (Sandbox Code Playgroud)
如果我用IE 10(10.0.9200.16484)测试这个非常简单的例子,我从未收到过弹出状态事件(即警报框永远不会出现).即使我离开并通过IE的后退按钮返回.即这个Q/A并不能解决我的问题.
使用Chrome 24,一切正常.
关于IE10是否支持HTML 5 History API的任何消息?
javascript ×4
jquery ×4
pushstate ×3
ajax ×2
html5 ×2
browser ×1
history ×1
history.js ×1
modal-dialog ×1
new-window ×1
pinterest ×1
redirect ×1
url ×1