我在本地运行脚本,在其中一个函数中,它会转到不同的页面。一旦它这样做,我希望它回到上一页并继续在本地运行脚本。
有没有办法在不刷新页面的情况下返回上一页。
我使用parent.history.back();
这可以回到上一页,但刷新页面,以便我的脚本停止运行。
答案 0 :(得分:2)
TL; DR - 简短回答是“否”
没有“刷新”页面就无法返回。
“刷新”是一个有点模糊的术语,没有确切的技术含义......
无论是浏览器的后退按钮,还是.history.back()
告诉浏览器加载它在历史记录中保存的上一页,无论以任何方式“返回”。
页面是从浏览器缓存加载还是从服务器重新请求,取决于浏览器,而不是由您决定。
在任何情况下,浏览器是否会重新解析DOM和/或重新呈现页面。实际上,它 。。
其中任何一个都可称为“刷新”。
然而,那时,浏览器将开始解析并执行任何存在的脚本。
浏览器返回的页面是从服务器收到的HTML文本,但是在加载页面后脚本可能会显着修改DOM。这些脚本需要从一开始就重新运行,当重新加载页面时返回。
可以想象,编写一个浏览器可以在您离开页面时保存DOM状态和js执行状态,并在您返回时恢复该状态,但不存在此类浏览器。
根据您的实际目标,可以完成许多事情,例如pushState()
and replaceState()
,单页网络应用程序,XMLHttpRequest
,使用{ {1}}等等,您可以将当前页面内容(DOM)替换为其他内容而不实际“前进”,并在以后“返回”页面时恢复已保存的DOM,
但对于Stackoverflow问题来说,这个问题太大了。
答案 1 :(得分:-2)
我不是100%关注你的问题,但是从我的笔记中我可以提供给你:
// To some url
window.location.href = 'some/new/url';
// To some url without it effecting browser back history:
window.location.replace('some/new/url');