当前位置: 首页 > 面试题库 >

单击触发JavaScript的链接时,如何阻止网页滚动到顶部?

阎善
2023-03-14
问题内容

当我有一个链接到jQuery或JavaScript事件的链接时,例如:

<a href="#">My Link</a>

如何防止页面滚动到顶部?当我从锚点移除href属性时,页面不会滚动到顶部,但链接似乎不可点击。


问题答案:

您需要防止发生click事件的默认操作(即,导航到链接目标)。

有两种方法可以做到这一点。

选项1: event.preventDefault()

调用.preventDefault()传递给处理程序的事件对象的方法。如果您使用jQuery绑定处理程序,则该事件将是的实例,jQuery.Event并且将是的jQuery版本.preventDefault()。如果您addEventListener用于绑定处理程序,它将是Event和的原始DOM版本.preventDefault()。两种方式都可以满足您的需求。

例子:

$('#ma_link').click(function($e) {
    $e.preventDefault();
    doSomething();
});

document.getElementById('#ma_link').addEventListener('click', function (e) {
    e.preventDefault();
    doSomething();
})

选项2: return false;

在jQuery中:

从事件处理程序返回false将自动调用event.stopPropagation()和event.preventDefault()

因此,使用jQuery,您可以选择使用这种方法来防止默认链接行为:

$('#ma_link').click(function(e) {
     doSomething();
     return false;
});

如果您使用的是原始DOM事件,那么这也将在现代浏览器中起作用,因为HTML
5规范规定了这种行为。但是,该规范的较旧版本却没有,因此,如果需要与较旧浏览器的最大兼容性,则应.preventDefault()显式调用。



 类似资料:
  • 问题内容: 我需要为移动设备构建一个网页。我只有一件事还没有弄清楚:如何通过单击文本触发电话? 是否可以像电子邮件标签一样输入一个特殊的URL ? 特定于设备的解决方案不是首选。 我知道iPhone会自动识别电话号码并为此创建一个链接,但是如果这也可以用于图像…以及大多数移动设备,那就太好了。 问题答案: 大多数现代设备都支持tel:方案。因此,使用它应该很好。 如果您想将其用于图像,标签可以像处

  • 问题内容: 我的页面上有几个超链接。用户访问我的帮助部分时将阅读的常见问题解答。 使用锚点链接,我可以使页面滚动到锚点并在那里引导用户。 有没有办法使滚动平滑? 但是请注意,他正在使用自定义JavaScript库。也许jQuery提供了类似的功能? 问题答案: 现在有一种本地方法可以做到这一点: 当前仅最先进的浏览器才支持此功能。 对于较旧的浏览器支持,可以使用以下jQuery技术: 如果您的目标

  • 问题内容: 我目前在jQuery中使用标签来启动点击事件等。 例子是 但是我讨厌’#’如何使页面跳到页面顶部。我该怎么办呢? 问题答案: 在jQuery中,当您处理click事件时, 返回false可阻止链接以通常的方式响应 阻止发生默认操作(访问属性):

  • 问题内容: 有没有一种方法可以使用JavaScript / jQuery控制浏览器滚动? 当我向下滚动页面一半,然后触发重新加载时,我希望页面进入顶部,但它会尝试找到最后一个滚动位置。所以我这样做: 但是没有运气。 编辑 : 因此,当页面加载后,我打电话给您时,您的两个答案都有效。但是,如果我只是在页面上刷新,则看起来浏览器会在事件发生后计算并滚动到其旧的滚动位置(我也测试了body onload

  • 我正在使用selenium网络驱动程序来自动化网页。我的selenium代码没有识别链接。我收到以下错误。 线程“main”组织中出现异常。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“/html/body/font/font/b/a[2]”(会话信息:chrome=44.0.2403.89

  • 问题内容: 如何使用JavaScript滚动到页面顶部?即使滚动条立即跳到顶部也是可取的。我不是在寻找平滑的滚动。 问题答案: 如果您不需要更改以进行动画处理,则无需使用任何特殊的插件-我只需要使用本机JavaScript window.scrollTo方法- 传入0,0即可将页面立即滚动到左上角。 参量 x坐标是沿水平轴的像素。 y坐标是沿垂直轴的像素。