【问题标题】:Console.log the event that triggered page scroll to topConsole.log 触发页面滚动到顶部的事件
【发布时间】:2013-12-23 17:52:05
【问题描述】:

当内容加载完成时,我如何跟踪和console.log 负责将页面滚动到顶部的事件?请注意,代码中没有任何内容显式滚动到顶部,但是在 (jQuery) ajax 内容成功获取并呈现后,如果用户已经向下滚动了一点,页面将滚动到顶部。

有没有办法记录触发此行为的原因?

是否有允许记录所有 Javascript 事件的 Chrome 扩展程序?

我尝试过的一些事情没有帮助:

  • 没有函数运行超过一次(console.log 为每个步骤显示一次)
  • 使用

    防止滚动动画
    $('html, body').stop(true,false).clearQueue().finish();
    

    没用

  • 禁用图像延迟加载插件和其他辅助插件无效
  • 在 ajax/callbacks 的每一步都正确报告了记录身体高度
  • return false; 添加到$.ajax().success(),done(),complete() 没有帮助

Ajax 在文档准备就绪时触发。加载所有内容后会滚动到顶部。

【问题讨论】:

  • 我冒昧地猜测您的 AJAX 调用未能触发,请将您的调试器设置为“在导航时保留错误”并让我们知道会发生什么...
  • @Xander,我将如何在 jQuery 的$.ajax 中设置它? $.ajax().error(function(){ console.log('ajax error'); }); 上没有任何内容。似乎问题实际上是在 ajax 成功完成后发生的。
  • 在 Chrome/Firefox 开发工具中寻找该选项。这样做后,观察错误控制台是否有任何可能导致您观察到的行为的错误。
  • 谢谢,我找到并打开了,但没有错误。
  • 最常见的原因是 AJAX 调用被带有“#”作为其 href 的锚标记触发。 AJAX 事件被正确触发,但没有 event.preventDefault,哈希使页面滚动到顶部。

标签: javascript jquery


【解决方案1】:

由于您的源代码不完整,我只能想象这是因为您在<a href="#anchor"> 元素上的锚标记。

如果没有name="anchor" 属性,您的#anchor 标签会将您的页面滚动到顶部。 为了防止这种情况,试试这个:<a href="#anchor" onclick="return false;">No more scrolling to top</a>

另一种情况可能是您的网址中已经存在锚点,检查它并删除您网址中#字符之后的所有内容,即:www.website.com/contact/#anchor,删除#anchor并重试

【讨论】:

  • 感谢您的回答,但请查看我更新的问题以获取更多信息。
猜你喜欢
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多