我的html锚点如下。
<a name="template-8"/>
<h4 class="template" id="template-8">A title</h4>
据我所知,浏览器应该跳到具有匹配名称或id属性的元素。
当我输入网址http://my.site.com/templates#template-8 safari按预期跳过页面。
但是当链接如下时,锚点什么都不做。 Chrome,Opera,IE7和Firefox都可以使用。
<a href="http://my.site.com/templates#template-8">A link</a>
Safari是5.0版本,这可能是一个safari bug吗?
问题是我在链接的页面中有一个重定向标题。
Opera,IE,Chrome,Firefox都会将锚点转移到新页面。然而,safari在重定向上失去了锚点。
如果您在使用safari锚时遇到问题,请禁用任何重定向。
对我来说,我只需要改变
http://domain.com/page#myanchor
至
http://domain.com/page/#myanchor
我刚刚遇到同样的问题并在搜索时发现了你的帖子 - 显然你已经修复了这个问题,因为它已经回到了2010年,但我认为我会发布我发现的内容以防其他人发现这一点。 :)
我正在使用htaccess将我的url从mydomaincom / index.php重定向到mydomaincom /并发现我的导航在Safari中不起作用,因为我的href地址,其中index.php#值和Safari v5不会带来锚链接。
我没有关闭我的重定向,只是将网址更改为指向mydomaincom / #value。这不仅适用于所有浏览器,但它也使我的页面更快(不确定如何,但现在将搜索:))
我看到有两个方面的问题,这不是原因(因为你已经发现了问题),但可能没有帮助:
<a>
标签。你不能自我关闭应该有结束标签的标签,它应该是:<a name="template-8"></a>
。name
和id
属性共享相同的“名称空间”,因此您不能为name
和id
属性使用相同的值。过去10年中的所有浏览器都支持ID上的锚点,因此废弃了无用的链接标记。它没有使用以前提出的解决方案,它有助于我使用javascript以下列方式创建重定向。
<!-- <a href="#first-block"> -->
<a href="javascript:redirection('first-block')">
function redirection(destination){
window.location.href = "example.com/page.html#" + destination;
}
我把它留在这里,万一有人将来为你服务。
在Safari中修复锚标记。我这样做:
<a href="#" class="btn">A tag</a>
在我的CSS文件中:
.btn{
display:block;
width:100%;
height:100%;
}
重要的是出于某种原因,有时Safari需要将您的链接视为一个块,如果您创建一个列表,其中包含一些链接,它会很有用。示例:
<ul>
<li><a href="#" class="btn">A tag</a></li>
<li><a href="#" class="btn">A tag</a></li>
</ul>
适用于Safari 6+