【问题标题】:Script works in chrome but not in firefox脚本在 chrome 中有效,但在 Firefox 中无效
【发布时间】:2014-04-23 20:44:03
【问题描述】:

我有一个脚本在 chrome 中运行良好,但在 Firefox 中运行良好,我不知道为什么会这样。该脚本假设从锚点向下滚动到一个 id,但在 Firefox 中什么也不做。

示例我如何使用下面的脚本!

<nav>
  <ul>
    <li><a class="scroll" target="home">Home</a></li>
  </ul>
</nav>

<div id="home">
.....
</div>

<script>
  $('.scroll').click(function() {
  $(document).animate({
  scrollTop: eval($('#' + $(this).attr('target')).offset().top - 70)
  }, 1000);
  });
</script>

【问题讨论】:

  • 萤火虫有错误吗?
  • 那个 eval 到底是干什么用的?
  • 顺便说一句,您的eval 声明完全没有必要。
  • 当我使用 $(document).animate 时,我在 Chrome 中得到了 Uncaught TypeError: Cannot use 'in' operator to search for 'display' in undefined 的代码 - @Blazemonger 是完全正确的。

标签: javascript jquery html google-chrome firefox


【解决方案1】:

$(document).animate 更改为$('html,body').animate

http://jsfiddle.net/mblase75/vL79H/


也就是说,如果 JavaScript 被禁用或不工作,我会通过使用 HTML 标准哈希链接来稍微收紧你的代码:

<li><a class="scroll" href="#home">Home</a></li>

然后修改代码以适应它并删除不必要的eval语句:

$('.scroll').click(function (e) {
    e.preventDefault();
    $('html,body').animate({
        scrollTop: $($(this).attr('href')).offset().top - 70
    }, 1000);
});

http://jsfiddle.net/4FQn7/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多