【问题标题】:Anchor element not working in firefox and chrome锚元素在 Firefox 和 chrome 中不起作用
【发布时间】:2025-12-20 21:30:10
【问题描述】:

我的客户网站上的图片上有一个超链接。它在 IE 中工作,但是当我在 Chrome/Mozilla 中打开同一页面时,它没有显示锚指针,点击也没有任何反应。我的代码:

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

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

【问题讨论】:

    标签: html firefox google-chrome anchor


    【解决方案1】:

    简单的解决方法:这适用于我迄今为止测试过的所有浏览器,使用document.getElementById([anchor tag]).scrollToView(true);

    示例: --来自--

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

    --到--

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

    【讨论】:

    • 这确实有效,但不会更新浏览器地址栏。在Updating address bar with new URL without hash or reloading the page上查看如何更新浏览器地址栏和历史记录
    • 再次这个答案会严重误导人们,绝不是一个有效的答案。这个问题是一个浏览器错误,会破坏页面并使网站无法被搜索引擎抓取(并破坏网站的经济性,从而破坏自己的整个职业)应该导致考虑此答案曾经.
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我也面临同样的问题。 This suggestion(将 position: relative 添加到包含的 div 中)似乎解决了它,但我正在做绝对定位,需要以另一种方式解决这个问题。不过,我认为它可能对其他人有所帮助。

      【讨论】:

      • 将 css 属性位置添加到 relative 工作完美!
      【解决方案4】:

      对于 Chrome *only 的相同问题,我发现对我有用的是不要将锚 id 包含在块级元素中,而是包含标注。

      例如

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

      希望这会有所帮助 :) 适用于所有浏览器。

      -本

      【讨论】:

      • 我想补充一点,为了符合 W3C HTML5 验证,您必须删除 name 属性,因为它在 HTML5 中已过时。
      【解决方案5】:

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

      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>
      

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          如果没有完整的 HTML 源代码,我会指出这个锚是嵌套的,或者是在一些没有结束标记的元素之后。

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

          您可以通过验证您的文档轻松找到此问题:

          它是 W3C 官方的 HTML/XHTML 验证器,所以如果某些元素没有关闭,它会指出你需要更正哪一个!

          编辑: 看完你在答案的 cmets 中发布的 HTML 源代码后……文档类型 (DOCTYPE) 声明在哪里?你忘了添加它!

          在 HTML 文档的开头添加:

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

          当您不提供文档类型时,浏览器会以“怪癖”模式呈现网页,这是一种可能无法按预期呈现页面的兼容模式。在此处了解更多信息:

          如果这能解决您的问题,请告诉我!

          【讨论】:

          • 我检查了validator.w3.org 没有检测到未关闭的标签。连接到服务器后,我可以共享整个代码
          • 事实上,我已经打开了您的 HTML 标记而没有更改它,并且该链接有效。我点击图片并尝试打开链接!
          【解决方案8】:

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

          【讨论】:

          • -将我的经验和其他关于添加位置的评论放在一起:相对似乎 Firefox & co 浏览器中的错误是,在给定的 div 容器中,它们需要在内部 div 中保持一致的定位。否则锚点不起作用。
          【解决方案9】:

          我发现有时您可能会错误地使用具有相同 ID 的另一个元素。在我的例子中,它是一个选项标签,不能移动到视图中。因此,我建议您尝试$('#yourid') 看看是否有任何标签意外具有相同的ID。

          【讨论】:

            【解决方案10】:

            过去几个小时我一直在解决这个问题,页面锚标记在 Firefox 和 IE 中工作,但在 chrome 中没有。我不是专业的开发人员,所以我不知道为什么,但似乎在某些情况下,chrome 不会从堆叠的 div 中读取标签并将您带到同一页面上的所需位置。我通过在我的 id 之后添加一个 span id 来解决它...... - 所以它看起来像这样:

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

            在 Firefox、Chrome 和 Safari 中测试。不过这台机器上没有 IE 来测试。

            【讨论】:

            • 这应该是一个单独的问题(不是答案,所以你可能会得到一些反对意见(我没有代表反对),但在你的情况下,你有重复的 id(“ID_NAME” - 其中无论如何都应该小写)并且在 a 的 id 之后没有结束引号。
            【解决方案11】:

            另一个可能发生的问题(尽管这里可能不是这种情况)是您可以更改 a 标签的 css 指针声明,例如。

            a {
                cursor: default;
            }
            

            如果是这种情况,悬停效果和点击链接应该仍然有效。

            【讨论】:

              【解决方案12】:

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

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

              【讨论】:

                【解决方案13】:

                对于 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 部分。它对我有用! :)

                【讨论】: