【发布时间】:2011-07-31 15:50:52
【问题描述】:
如果一个网页有一个基本的href,那么当我们使用#ElementId时是否可以忽略它,而不刷新页面?
这里有一些代码:
<html>
<head>
<base href="http://www.google.com/" />
</head>
<body>
<div id="test">
Test
</div>
<button onclick="location.href='#test'">Back to Test</button>
<a href="#test">Back to Test!</a>
</body>
</html>
当我单击按钮或链接时,我希望浏览器将页面带到 div#test。没有 base href 标记,一切正常 - 但是,使用 base-href 标记,如果没有 Javascript 的帮助,我将无法做到这一点。有没有办法以更“自然”的方式做到这一点?
以下是我目前的解决方法...
<html>
<head>
<base href="http://www.google.com/" />
<script type="text/javascript">
function goToElement(elementId) {
var baseTag = document.getElementsByTagName("base")[0];
var existingBaseHref = baseTag.href;
baseTag.href = "";
location.href = "#" + elementId;
baseTag.href = existingBaseHref;
}
</script>
</head>
<body>
<div id="test">
Test
</div>
<button onclick="goToElement('test')">Back to Test</button>
<a onclick="goToElement('test')">Back to Test!</a>
</body>
</html>
【问题讨论】:
-
为什么你有基本的href?为什么不直接将 location.hash 设置为 elementId 呢?
-
@mplungjan - Base-href:不幸的是,历史代码库的原因。 :( 关于 location.hash - 你能提供一个代码示例吗?
标签: javascript html anchor