硬刷新浏览器页面,然后使用 javascript 重定向到 url
Posted
技术标签:
【中文标题】硬刷新浏览器页面,然后使用 javascript 重定向到 url【英文标题】:hard refresh of browser page and then redirect to a url using javascript 【发布时间】:2015-06-22 09:24:38 【问题描述】:我正在尝试重新加载页面并将其重定向到另一个页面, 或者只是将它重定向到另一个,但我不能这样做
window.location.href
或
windown.location
因为我有一个 Angular 单页应用程序,它可以捕获路线,而不是重新加载页面,而是直接打开部分
我试过了——
window.location.reload(true)
但它会重新加载页面并且无法更改 url 我也试过了——
window.location.assign
和
window.location.replace
有什么办法吗?
【问题讨论】:
你可以试试window.open('url', '_self')
你能用小提琴或笨拙的方式复制它吗? plnkr.co/edit/5B6hH1Ro7CS4PmTDXTy4?p=preview ...您必须在弹出的窗口中查看它...
我只是通过打击和尝试实现了它。我所做的是在通过 $window.location.href = url; 更改位置之后以前和现在单独使用时都对我不起作用。我在下一行添加了 window.location.reload(true) 以便使用新的 url 重新加载窗口
【参考方案1】:
AngularJS 会执行完整页面重新加载的三种情况:
包含目标元素的链接
例子:
<a href="/ext/link?a=b" target="_self"> link </a>
指向不同域的绝对链接 示例:
<a href="http://angularjs.org/">link</a>
以“/”开头的链接在定义 base 时指向不同的基本路径 示例:
<a href="/not-my-base/link">link</a>
更新:
使用javascript:
$location 服务只允许您更改 URL;它不允许您重新加载页面。当您需要更改 URL 并重新加载页面或导航到不同的页面时,请使用较低级别的 API:$window.location.href。
见:
https://docs.angularjs.org/guide/$location
https://docs.angularjs.org/api/ng/service/$location
【讨论】:
这三种方式不是angularjs特有的,任何html页面都是这样的:p【参考方案2】:为了重定向到不同的页面,你应该使用
$window.open('url', '_self')
这将再次加载您的页面。
【讨论】:
不行,我也试过 var win = window.self win.open(url,"_self") 我在子作用域中调用它,这有什么关系吗? @deadman 你在使用模式窗口吗?为什么你不考虑引导弹出窗口angular-ui.github.io/bootstrap【参考方案3】:试试
window.location = url;
请记住,网址必须具有协议,即 http:// 或 https://
【讨论】:
正如我在问题中所说,window.location 不起作用,是的,我确实添加了 http:// 你也可以试试这个。 ***.com/questions/27941876/…【参考方案4】:所以您需要更改 URL 末尾的哈希值吗?即从#/
到#/otherpage/
?
如果是,location.hash = "/otherpage/";
【讨论】:
不,任何 url 更改都会被 angular 捕获,它不会让整个页面刷新,只会更改视图和控制器。这就是为什么 window.location.reload(true) 对我有用,而在我上面展示的解决方案中没有其他解决方案,但除了 url 更改之外,我还想更改 url 【参考方案5】:根据https://docs.angularjs.org/guide/$location,如果 AngularJS 使用 HTML5 模式,它永远不会在现代浏览器中执行完整的页面重新加载。
HTML5 模式
在 HTML5 模式下,$location 服务的 getter 和 setter 通过 HTML5 历史 API 与浏览器 URL 地址交互。这允许使用常规的 URL 路径和搜索段,而不是它们的 hashbang 等价物。如果浏览器不支持 HTML5 History API,$location 服务将自动回退到使用 hashbang URL。这让您不必担心显示您的应用的浏览器是否支持历史 API; $location 服务透明地使用最佳可用选项。
在旧版浏览器中打开常规 URL -> 重定向到 hashbang URL 在现代浏览器中打开 hashbang URL -> 重写为常规 URL 请注意,在这种模式下,Angular 会拦截所有链接(受以下“Html 链接重写”规则的约束)并以从不执行完整页面重新加载的方式更新 url。
(强调我的)
由于 Hashbang 模式是默认模式,因此代码必须在某处设置 HTML5 模式。
【讨论】:
以上是关于硬刷新浏览器页面,然后使用 javascript 重定向到 url的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavaScript 刷新浏览器后如何在一个页面网站中保存部分位置?