繁体   English   中英

锚元素在Firefox和Chrome中不起作用

[英]Anchor element not working in firefox and chrome

我的客户网站上的图像上有一个超链接。 它可以在IE中运行,但是当我在Chrome / Mozilla中打开同一页面时,它没有显示锚定指针,并且在单击任一指针时都没有任何反应。 我的代码:

<a href="Home.aspx?ModuleID=1">
 <img alt="Alternative Text" src="Images/Logo.gif" />
</a>

有人知道这个问题可能是什么吗?

简单的变通方法:在迄今为止我测试过的所有浏览器中都可以使用document.getElementById([anchor tag]).scrollToView(true);

示例:-from--

<a href="#" onclick="document.getElementById('ShowMeHow2').scrollIntoView(true);return false;">

- 至 -

<a id="ShowMeHow2" name="ShowMeHow2"> </a>

检查页面中是否完全使用css z顺序。 不正确的z顺序会导致按钮和链接不起作用。

我发现,对于同一个Chrome *的同一问题,对我有用的是,不要将锚点ID括在块级元素中,而应将标注括起来。

例如

    <body>
    <a id="top" name="top"> </a>
    <p>...</p>
    <p><a href="#top">Back to Top</a></p>
    </body>
    <!-- /end ex. -->

希望这会有所帮助:)在所有浏览器中均可使用。

-本

我正面临着同样的问题。 这个建议 (添加位置:相对于包含div的位置)似乎可以解决此问题,但是我正在绝对定位并且需要以其他方式解决此问题。 我认为这可能会对其他人有所帮助。

不要将#字符放在锚点上,仅在链接中

Correct <a name="top">[top of page]</a> <a link="#top">[link]</a>

Incorrect <a name="#top">[top of page]</a> <a link="top">[link]</a>

我在Chrome浏览器中遇到了类似的问题,将鼠标悬停在导航链接上时,光标没有变为指向手,而单击链接时,链接本身没有响应。 通过将值999的z-index属性添加到样式表中的我的锚元素中,返回了预期的行为。

我有类似的情况。 就我而言。 我试图使用左/右浮动对齐3 div。 其中之一具有position:relative属性。 一旦我删除了这个,然后Firefox的锚标签工作。 而不是添加额外的属性。 希望这可以帮助其他人。

我发现有时您可能会误将另一个具有相同ID的元素。 就我而言,它是一个选项标签,无法移动到视图中。 因此,我建议您尝试$('#yourid')来查看是否有意外的标签具有相同的ID。

我花了最后几个小时来解决这个问题,在可用于Firefox和IE的页面锚标签中,而不是可用于Chrome中。 我不是专业开发人员,所以我不知道为什么,但是在某些情况下,chrome似乎无法从堆叠的div内读取标签,而是将您传送到同一页上的所需位置。 我通过在我的ID后面添加跨度ID来解决这个问题-看起来像这样:

<a href="#ID_NAME"></a>
...
<a id="ID_NAME><a/><span id="ID_NAME"></span>

在Firefox,Chrome和Safari中进行了测试。 虽然在此计算机上没有IE进行测试。

与此相关的另一个可能发生的问题(尽管这里可能不是这种情况)是您可能已经更改了a标签的css指针声明。

a {
    cursor: default;
}

如果是这种情况,悬停效果和单击链接仍然应该起作用。

它看起来很愚蠢,但我曾经遇到过同样的问题。我只是将锚链接放置在现有页面中作为增强功能的一部分。奇怪的是,这些链接在IE中是可单击的,但在chrome / firefox中却不是。

仔细查看后,我发现有一个现有脚本删除了用于打印功能的锚标记链接。 添加的锚标记是同一页面的一部分,因此出现了此问题。 我添加了带有新添加的锚的id的if条件,以便它们将跳过添加的功能以删除锚的链接。

对于Firefox,请在页面的HEAD部分中应用此脚本。

<script>
    $(document).ready(function(){
        var h = window.location.hash;
        if (h) {
            var headerH = $('#navigationMenu').outerHeight();
            $('html, body').stop().animate({
                scrollTop : $(h).offset().top - headerH + "px"
            }, 1200, 'easeInOutExpo');

            event.preventDefault();
        }
    });
</script>

对于Chrome,请在页面的HEAD部分中使用以下内容。

<script>
    $(document).ready(function () {
        var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
        if (window.location.hash && isChrome) {
            setTimeout(function () {
                var hash = window.location.hash;
                window.location.hash = "";
                window.location.hash = hash;
            }, 300);
        }
    });
</script>

只需将脚本复制并粘贴到页面的HEAD部分中即可。 它为我工作! :)

如果没有完整的HTML源代码,我将指出该锚是嵌套的,还是位于某些没有结束标记的元素之后。

如果这不是问题,请发布完整的HTML源代码。

通过使用以下方法验证文档,您可以轻松找到此问题:

它是W3C官方的HTML / XHTML验证器,因此,如果未关闭某些元素,它将指出您需要更正的那个!

编辑:观看答案注释中张贴的HTML源代码之后...文档类型(DOCTYPE)声明在哪里? 您忘记添加了!

在HTML文档的开头添加以下内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果不提供文档类型,浏览器将以“ quicks”模式呈现网页,这是一种兼容模式,可能无法按预期呈现页面。 在此处了解有关此内容的更多信息:

让我知道这是否可以解决您的问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM