刷新浏览器页面,然后使用javascript重定向到网址

时间:2015-04-16 06:22:14

标签: javascript angularjs browser reload

我正在尝试重新加载页面并将其重定向到另一个页面, 或者只是将其重定向到另一个,但我不能通过

来做到这一点
window.location.href

windown.location

因为我有一个Angular单页应用程序捕获路径而不是重新加载页面直接打开部分

我确实尝试过 -

window.location.reload(true)

但它重新加载页面并且无法更改网址 我也试过 -

window.location.assign

window.location.replace

有没有办法做到这一点?

5 个答案:

答案 0 :(得分:4)

有三种情况,AngularJS将执行整页重新加载:

包含目标元素的链接

示例:

<a href="/ext/link?a=b" target="_self"> link  </a>

转到其他域的绝对链接 示例:

<a href="http://angularjs.org/">link</a>

以&#39; /&#39;开头的链接当定义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

答案 1 :(得分:1)

要重定向到其他页面,您应该使用

$window.open('url', '_self')

将再次加载您的网页。

答案 2 :(得分:0)

试     window.location = url;

请记住,网址必须具有协议,即http://或https://

答案 3 :(得分:0)

所以你需要更改URL末尾的哈希值?即从#/#/otherpage/

如果是,location.hash = "/otherpage/";

答案 4 :(得分:0)

根据https://docs.angularjs.org/guide/$location,如果AngularJS使用HTML5模式,它永远不会在现代浏览器中执行整页重新加载。

  

HTML5模式

     

在HTML5模式下,$ location服务getter和setter通过HTML5历史记录API与浏览器URL地址进行交互。这允许使用常规URL路径和搜索段,而不是它们的hashbang等价物。如果浏览器不支持HTML5历史记录API,则$ location服务将自动回退到使用hashbang网址。这使您不必担心显示您的应用的浏览器是否支持历史记录API; $ location服务透明地使用最佳可用选项。

     

在旧版浏览器中打开常规网址 - &gt;重定向到hashbang URL   在现代浏览器中打开hashbang URL - &gt;重写为常规URL   请注意,在此模式下,Angular会拦截所有链接(受以下“Html链接重写”规则的约束)并以从不执行整页重新加载的方式更新网址。

(强调我的)

由于Hashbang模式是默认模式,因此代码必须在某处设置HTML5模式。