【发布时间】:2016-04-03 03:36:15
【问题描述】:
我正在使用带有 ui-router 的 Angular.js 1.3。 我有 3 页,page1.html、page2.html、page3.html。
当用户点击 page1 时,page2 将打开,但我想保存页面 1 的滚动状态,即用户点击之前所在的位置,以便在点击后退按钮后,他会进入相同的滚动状态。
为了解决这个问题,我在 iframe 中的 page1.html 上打开 page2.html,并为其提供绝对位置以显示在 page1.html 上,我正在使用:
history.pushState({}, '', '/page2.html');
更改网址。此实现工作正常。
现在当用户点击 page2.html 上的链接时,它应该会打开 page3.html,就像我使用的普通链接一样:
$state.go("page3")
现在的问题是状态变化,page3.html 加载,但 url 仍然是 /page2.html,url 没有改变。
我什至尝试过:
history.pushState({}, '', '/page3.html');
仍然 url 没有改变。任何人都知道为什么会这样。
【问题讨论】:
-
我不确定这是否可行。但我猜你在
Iframe这就是为什么它不改变这个网址。当你在第2页时,你能试试eval吗?可能是parent.eval($state.go("page3"))这样的东西。 -
你能发一个 JSFiddle 吗?
-
对不起,我不能在 jsfiddle 上发布它。但是,是的,我可以理解链接在 iframe 中,这就是为什么它没有改变 url(可能)。但是js代码运行正常,history.pushState在运行(Js源码调试器),但是对url没有影响。将深入了解 iframe。
标签: javascript angularjs url browser-history pushstate