2016-04-20 81 views
0

如何使內部鏈接重新加載頁面,就像它是另一個HTTP請求一樣?強制HTML內部鏈接/片段標識符(#)重新加載頁面

考慮以下基本的例子:

#content {margin-top:1400px;}
<a href="#content">Go to Content</a> 
 

 
<section id="content">Content</section>

Go to Content錨將滾動到靶向部分和散列#content添加到URL(example.com/#content)。我將如何強制這個重新加載/刷新頁面,就像它是外部鏈接一樣,如example.com/content/

會接受服務器端或JavaScript解決方案。

+0

退房http://stackoverflow.com/questions/4169037/how-to-make-page-with-hash-tag-href-refresh – maioman

+0

@maioman這是相反我想要的是。 – Aziz

回答

1

您可以將click處理程序添加到計劃在事件完成後發生的location.reload()的鏈接。

下面是一個使用委託處理:

document.body.addEventListener("click", function(e) { 
    var node = e.target; 
    while (node && node != this) { 
     if (node.nodeName.toUpperCase() == "A") { 
      setTimeout(function() { 
       location.reload(); 
      }, 0); 
      return; 
     } 
     node = node.parentNode; 
    } 
}, false); 

你可能要篩選一下。

+1

'location.reload();'做了竅門。謝謝。 – Aziz

+0

快速提問:爲什麼它必須包含在'setTimeout'函數中? – Aziz

+1

@Aziz:我這樣做是爲了讓事件在重新啓動前完成。如果你在事件處理期間這樣做,我不認爲哈希將被添加到地址欄中。此外,如果鏈接是另一個頁面,允許事件完成將(我相信)允許用戶去其他頁面,但我不能保證立即執行'reload'不會妨礙那個。但是在你的目標瀏覽器上進行試驗。 –

1

使用此

<script> 
function gototab(reload) 
    { 
    window.location.href = 'test.php#content'; 
    window.location.reload(true); 
    } 
</script> 

<a href="#content" onclick="gototab();">Go to Content</a> 
+0

這需要更多的維護,再加上'onclick'支持錨。無論如何感謝你的努力 – Aziz

相關問題