JavaScript用哈希值重新加载页面


79

我尝试通过一些过程在外部javascript文件中使用此语句刷新页面。

window.location.href = window.location.href

它完美地重新加载了页面,但是我想在重新加载后滚动到特定位置。因此,我将其放在页面上。

<a name="uploadImgSection"></a>

并将javascript更改为

window.location.href = window.location.href + "#mypara";

此代码也不会重新加载/刷新页面

window.location.hash = "#uploadImgSection";
window.location.href = window.location.href;

当我这样做时,它根本不会重新加载页面。有什么办法可以用滚动条位置重新加载页面?


使用PHP文件重定向到新页面?
德里克·朕会功夫

不只是html页面。目的是在运行某些javascript函数后刷新页面,并将其滚动回到该段落的位置。
乔纳斯(Jonas T)

1
你怎么打window.location.href?如果您是在页面加载时执行此操作,并且您点击了f5,并且使用的是firefox(或其他浏览器,在刷新时滚动到了f5之前的位置),则可能是问题所在
ajax333221,2012年

Answers:


156
window.location.href += "#mypara";
location.reload();

首先添加哈希,然后重新加载页面。哈希将保留在那里,并且页面将被重新加载。

经过测试,有效。


ps:如果网址中已经存在哈希,则可能需要通过location.hash而不是直接更改它.href


1
另一件事。它确实刷新了页面,但是在重新加载后包括了发布数据。我该如何清洁?这些帖子数据阻止我删除数据行。
乔纳斯(Jonas T)

请阅读这个。stackoverflow.com/questions/2405117/… 它确实包含那些阻止我执行其他回发事件的POST数据。
乔纳斯(Jonas T)

好吧,我对POST不太了解。如果需要,您可以提出一个新问题。
德里克·朕会功夫

1
好吧,我最后不得不使用查询字符串。“ window.location.href = url +”&action = reload“;”。在页面加载事件中检查javascripot中的操作查询字符串,然后执行“ window.location.hash =“ #uploadImgSection”;“。这不是它应该工作的方式,但是我现在不得不通过这种方式使它工作。
乔纳斯(Jonas T)

@Derek朕会功夫你是一个天才:)
Attila Naghi 2014年

35

我想更新此问题,因为我发现使用window.location.href += "#mypara"会继续将参数附加到url,即使它存在。我发现更好的方法是使用

window.location.hash = "#mypara"
location.reload();

25

这确实是一篇旧文章,我仍然会尝试使用正确的答案进行回答。

  1. location.reload()location.reload(true)在浏览器上像F5一样工作。如果先前的加载完成,这会将所有表单数据发布回服务器。
  2. location.href在浏览器识别出URL更改之前,不会刷新页面。哈希(#paramname)中的更改不符合URL更改的条件,因此仅执行此操作 location.href+="#paramname"将无效。

因此,location.href+="?anything#paramname"应按?anythingURL中的更改将页面重新加载为新请求。


好答案。这是一个煮熟的版本:window.location ='<?php echo $ _POST ['back']?>&rand ='+((new Date())。getTime()%1000000000)+'#myhash';
2013年

4
另一个:location.href + ='&rand ='+ Math.rand()+'#myhash';
2013年

与其他职位相比,IMO对这一问题的回答最佳。例如,它不需要更改可能已作为库的一部分编写的基础代码。
thekingoftruth 2015年

1
Johan,Math.rand()应该更改为Math.random()
tomJO '18

最接近的答案(也许其他答案在2012年是正确的,但在2018年都错了),但是它存在将条目添加到用户的地址栏历史记录的问题,如果您只是尝试刷新,那么这样做就不好了相同的历史状态...
格伦·梅纳德


-1

试试这个

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";

4
这也不会重新加载页面。
乔纳斯(Jonas T)

“尝试一下”代码仅答案不是很有用。到底在做什么 为什么行得通?
random_user_name19年

-1

这为我工作:

var tabValue = document.URL;
window.location = tabValue.substring(0, tabValue.lastIndexOf("#"));
window.location.hash = "#tabs-3"; //Whatever is your hash value
location.reload();

-1

这对我有用

window.location.href = baseUrl + "#/m/team";
 location.reload();

-1

这对我有用

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});

这似乎基本上是其他答案已经可以解决的更长的方法,而且我不认为它包含#myPara部分,因此不会像原始海报所希望的那样起作用,尽管请编辑答案以阐明是否我错了。
blm 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.