2012-05-16 26 views
65

我想在一些進程後用外部JavaScript文件中的此語句刷新頁面。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; 

當我這樣做,它不會在重新加載頁面所有。有什麼辦法可以用滾動條位置重新加載頁面嗎?

+0

使用PHP文件重定向到新頁面? –

+0

沒有隻是HTML頁面。目的是在運行一些JavaScript函數並將其滾動回該段落的位置後刷新頁面。 –

+1

你怎麼調用'window.location.href'?如果你在頁面加載時做了這樣的事情,並且你正在使用f5並且你正在使用Firefox(或者其他瀏覽器在刷新之前滾動到f5之前的位置),那麼這個_might_可能是問題 – ajax333221

回答

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

首先添加的哈希值,然後重新加載頁面。哈希將保持在那裏,並重新加載頁面。

經過測試,作品。


PS:如果散列在URL中已經存在,你可能想通過location.hash,而不是.href直接改變它。

+2

你是天才德里克。有用。謝啦。另一件事是 –

+1

。它刷新了頁面,但它包含重新加載後的發佈數據。我怎樣才能清理這些?這些發佈數據阻止我刪除數據行。 –

+0

什麼發佈數據? –

-1

試試這個

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

這並不會重新加載頁面。 –

19

這真的是一箇舊帖子,我仍然會嘗試用正確的答案組合來回答。

  1. location.reload()location.reload(true)作品像F5上的瀏覽器。如果以前的加載完成,這會將所有表單數據發送回服務器。
  2. location.href在瀏覽器識別到URL更改之前不會刷新頁面。散列更改(#參數名稱)不符合URL更改的條件,因此只是執行 location.href+="#paramname"將不起作用。

因此,location.href+="?anything#paramname"應重新加載頁面作爲新的請求,因爲?anything是URL中的更改。

+0

好的答案。這裏是一個熟的版本: window.location ='<?php echo $ _POST ['back']?>&rand ='+((new Date())。getTime()%1000000000)+'#myhash'; – Johan

+3

另一個:location.href + ='&rand ='+ Math.rand()+'#myhash'; – Johan

+0

海事組織這回答了與其他職位相比最好的問題。例如,它不需要更改可能已經作爲庫的一部分編寫的底層代碼。 – thekingoftruth

25

我想更新這個問題,因爲我發現使用window.location.href += "#mypara"將繼續追加參數到URL,即使它存在。我已經找到了更好的辦法是使用

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

這爲我工作:

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

這爲我工作

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

這似乎基本上是一個更長的做其他答案已經做的方式,再加上我不認爲它包括#myPara部分,所以不會像原始海報想要的那樣工作,但請編輯答案以澄清如果我錯了。 – blm

0

這項工作對我來說

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