开发者

Javascript: How to truly reload a site with an anchor tag?

开发者 https://www.devze.com 2022-12-21 04:18 出处:网络
Take this code snippet for example: window.location.href = \'mysite.htm#images\'; Already being on the site mysite.htm and triggering the reload thru location.href won\'t reload the page but jump t

Take this code snippet for example:

window.location.href = 'mysite.htm#images';

Already being on the site mysite.htm and triggering the reload thru location.href won't reload the page but jump to the anchor named within the URL.

I need a mechanism to truly reload the page. Any ideas?

PS: I tried location's other methods but none of them does the trick :(

EDIT

Don't hang on the filetype htm. I'd need it for dynamic sites as wel开发者_Go百科l.


After you set the specified URL into location, issue window.location.reload(true). This will force browser to reload the page.


use the query part of the URL to add a random string:

// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';


While I feel alemjerus's answer is on the good direction, it doesn't work when the new URL points to different page, at least on my Chrome v40.

Example, when the new URL just add an anchor, it works fine:

var redirectToURL = '/questions/2319004/javascript-how-to-truly-reload-a-site-with-an-anchor-tag#answer-28621360';
window.location.href = redirectToURL;
window.location.reload(true);

But when it points to a different page, user will still stay on the current page after reload. (Run the following codes in a batch, no delay between location.href= and location.reload):

var redirectToURL = 'http://stackoverflow.com';
window.location.href = redirectToURL;
window.location.reload(true);

In this case, remove the location.reload works. So my workaround is to check whether new URL is on the same page:

var urlParser = document.createElement('a');
urlParser.href = redirectToURL;
if (urlParser.origin + urlParser.pathname === location.origin + location.pathname) {
    window.location.reload(true);
}

Tested on Chrome and Safari, haven't tried IE. Kindly let me know if it doesn't work on any major browser.


You could be a cheater and append a randomized query string, redirecting to "mysite.htm?random=289954034#images".

But if this is a static page, as .htm implies, what do you need reloading for? If it's so that your onload Javascript can occur a second time, maybe you just need to change your application's flow.


I found that the answer by @alemjerus would retrigger a POST if that was the last request:

window.location.reload(true)

What I wanted was to refresh the page from scratch using a GET, so I used this solution:

<a href="javascript:window.location.href=window.location.href">Refresh page</a>


Try this: window.location.href = 'mysite.htm?';

EDIT: This will only work the first time; after that, the caching takes effect again.


Works with most of the Mozilla browsers

<a title="Reset this Document" href="javascript:void()" onclick="window.location.href='#'"><font color="red">Reset</font></a>

Code Line:

window.location.href='#'
or window.location.href=''

The last code will not work properly with IE

0

精彩评论

暂无评论...
验证码 换一张
取 消