硬刷新浏览器页面,然后使用 javascript 重定向到 url
hard refresh of browser page and then redirect to a url using javascript
我正在尝试重新加载页面并将其重定向到另一个页面,
或者只是将它重定向到另一个,但我不能通过
window.location.href
或
windown.location
因为我有一个 Angular 单页应用程序,它捕获路由而不是重新加载页面直接打开部分
我试过了 -
window.location.reload(true)
但它会重新加载页面并且无法更改 url
我也试过 -
window.location.assign
和
window.location.replace
有什么办法吗?
尝试
window.location = url;
请记住 url 必须有一个协议,即 http:// 或 https://
要重定向到不同的页面,您应该使用
$window.open('url', '_self')
这将再次加载您的页面。
因此您需要更改 URL 末尾的哈希值?即从 #/
到 #/otherpage/
?
如果是,location.hash = "/otherpage/";
在三种情况下AngularJS将执行整页重新加载:
包含目标元素的链接
示例:
<a href="/ext/link?a=b" target="_self"> link </a>
指向不同域的绝对链接
示例:
<a href="http://angularjs.org/">link</a>
以“/”开头的链接在定义基础时导致不同的基础路径
示例:
<a href="/not-my-base/link">link</a>
更新:
使用javascript:
$location 服务允许您仅更改 URL;它不允许您重新加载页面。当您需要更改 URL 并重新加载页面或导航到其他页面时,请使用较低级别的 API:$window.location.href.
参见:
根据 https://docs.angularjs.org/guide/$location,如果 AngularJS 使用 HTML5 模式,它永远不会在现代浏览器中执行完整页面重新加载。
HTML5 mode
In HTML5 mode, the $location service getters and setters interact with the browser URL address through the HTML5 history API. This allows for use of regular URL path and search segments, instead of their hashbang equivalents. If the HTML5 History API is not supported by a browser, the $location service will fall back to using the hashbang URLs automatically. This frees you from having to worry about whether the browser displaying your app supports the history API or not; the $location service transparently uses the best available option.
Opening a regular URL in a legacy browser -> redirects to a hashbang URL
Opening hashbang URL in a modern browser -> rewrites to a regular URL
Note that in this mode, Angular intercepts all links (subject to the "Html link rewriting" rules below) and updates the url in a way that never performs a full page reload.
(强调我的)
由于 Hashbang 模式是默认模式,代码必须在某处设置 HTML5 模式。
我正在尝试重新加载页面并将其重定向到另一个页面, 或者只是将它重定向到另一个,但我不能通过
window.location.href
或
windown.location
因为我有一个 Angular 单页应用程序,它捕获路由而不是重新加载页面直接打开部分
我试过了 -
window.location.reload(true)
但它会重新加载页面并且无法更改 url 我也试过 -
window.location.assign
和
window.location.replace
有什么办法吗?
尝试
window.location = url;
请记住 url 必须有一个协议,即 http:// 或 https://
要重定向到不同的页面,您应该使用
$window.open('url', '_self')
这将再次加载您的页面。
因此您需要更改 URL 末尾的哈希值?即从 #/
到 #/otherpage/
?
如果是,location.hash = "/otherpage/";
在三种情况下AngularJS将执行整页重新加载:
包含目标元素的链接
示例:
<a href="/ext/link?a=b" target="_self"> link </a>
指向不同域的绝对链接 示例:
<a href="http://angularjs.org/">link</a>
以“/”开头的链接在定义基础时导致不同的基础路径 示例:
<a href="/not-my-base/link">link</a>
更新:
使用javascript:
$location 服务允许您仅更改 URL;它不允许您重新加载页面。当您需要更改 URL 并重新加载页面或导航到其他页面时,请使用较低级别的 API:$window.location.href.
参见:
根据 https://docs.angularjs.org/guide/$location,如果 AngularJS 使用 HTML5 模式,它永远不会在现代浏览器中执行完整页面重新加载。
HTML5 mode
In HTML5 mode, the $location service getters and setters interact with the browser URL address through the HTML5 history API. This allows for use of regular URL path and search segments, instead of their hashbang equivalents. If the HTML5 History API is not supported by a browser, the $location service will fall back to using the hashbang URLs automatically. This frees you from having to worry about whether the browser displaying your app supports the history API or not; the $location service transparently uses the best available option.
Opening a regular URL in a legacy browser -> redirects to a hashbang URL Opening hashbang URL in a modern browser -> rewrites to a regular URL Note that in this mode, Angular intercepts all links (subject to the "Html link rewriting" rules below) and updates the url in a way that never performs a full page reload.
(强调我的)
由于 Hashbang 模式是默认模式,代码必须在某处设置 HTML5 模式。