2016-04-20 47 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

相关问题