使用 window.onscroll 事件检测页面/框架滚动

2023-11-29

我想定位一个DIV位于页面内,以便即使用户垂直滚动页面,用户也可以看到它。

该页面的顶部有一个标题,即75 px高的。现在,当用户位于页面顶部并且没有垂直滚动时,DIV必须位于标题下方。然而,一旦用户滚动页面导致标题消失,同样的DIV现在必须位于页面顶部(即靠近浏览器视口的顶部边缘)

我最关心的是对window.onscroll浏览器上的事件。我检查了 QuirksMode 的兼容性(http://www.quirksmode.org/dom/events/scroll.html)。它似乎对 IE 和 Firefox 具有良好的兼容性。然而 Safari 和 Chrome 的支持似乎有点奇怪。这两个浏览器都是我的目标浏览器列表的一部分。

谁能告诉我如果window.onscroll事件是检测页面/框架滚动的有效方法吗?还有其他建议吗?

附:我考虑过使用CSSposition: fixed规则。它接近解决方案,但DIV只是停留在一个位置,我无法让它根据标题的可见性自适应移动。

Thanks!


这是您可以尝试的另一种替代方法。我用它来将工具栏 div 放置在页面顶部(也适用于 ipad)。

我没有使用 onScroll 事件,而是使用计时器每 500 毫秒触发一次,以检测窗口滚动到的位置scrollTop。如果您愿意,您可以将计时器调整为 200 毫秒左右。

这是我的代码的精简示例:

此 jquery 代码检查名为“floatlayer”的 dom 元素 div(这是包含我的按钮工具栏的 div)何时以及是否准备就绪,然后调用该函数setRepeater

$(#floatlayer").ready(function () {
    return setRepeater();
});

然后,该函数创建一个计时器,以每 500 毫秒继续执行函数“keepIncrease”

 function setRepeater() {
        aTimer = window.setInterval("keepIncrease()", 500);
        return false;
    }

这是函数 keepIncrease(),每 500 毫秒重复一次,负责根据当前窗口滚动位置定位工具栏 div:

function keepIncrease() {
    var divToolbar = $("#floatlayer")[0];

    var currentPos =  $(window).scrollTop();
    divToolbar.style.top = currentPos + "px";

    return false;
}

还有一些题外话: 如果您的内容位于 iframe 内,您还可以使用 $(window.parent).scrollTop() 而不是 $(window).scrollTop()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 window.onscroll 事件检测页面/框架滚动 的相关文章

  • 克隆元素对应表单中所有元素的事件

    我成功克隆了表行 其中包含从数据库检索的值 不过我对它没有什么问题 我对所有元素使用了类 因为克隆会重复 ID 不会出现问题 因为它无法唯一地定位每个元素 使每个元素 行在这里唯一的方法是什么 功能如何工作 当第一次选择框时 所选 ID 的
  • 外部 CSS 是否应用于 jsPDF 生成的 pdf

    我已经开始使用 jspdf 制作一些演示 我有一个 html 文件 我的 css 在外部文件中 我写了下面的代码来生成我的pdf pdfButton on click function var pdf new jsPDF p in lett
  • 使用 CSS 等高列

    我想对我的 CSS 表使用百分比 不幸的是 它对我不起作用 这段代码有什么问题 我应该使用 flexbox 而不是 table 吗 我想使用表格 因为我想要相同高度的列 ul list style none margin 0 display
  • flexslider 中的 GIF 滑块,如何仅在滑块上时开始 gif

    现在我有一个带有四个幻灯片的 Flexslider 第三个滑块是 gif 而不是像其他滑块一样是 jpg 我遇到的问题是 第三个 gif 滑块显然在到达页面时立即启动 而不是在您实际到达该滑块时启动 当点击前两个滑块时 gif 就快完成了
  • 监听外部事件。 Bash 到 NodeJS 的桥梁

    在 NodeJS 进程内部 我如何监听来自 bash 的事件 例如 NodeJS side obj on something function data console log data Bash side do something Hel
  • 获取 HTML 代码的结构

    我正在使用 BeautifulSoup4 我很好奇是否有一个函数可以返回 HTML 代码的结构 有序标签 这是一个例子 h1 Simple example h1 p This is a simple example of html page
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • CKEDITOR.styleSet.add - 'a' 元素的新样式

    由于某种原因如果我改变 p to a 它不再出现在样式列表中 有什么理由吗 CKEDITOR stylesSet add default name Wys wiersza 1 element p styles line height 18p
  • 使用 ECMA 脚本向节点(页面)添加新属性

    我需要在页面激活时向页面添加属性 我决定建立一个工作流程 在激活步骤之前执行相同的操作 我的自定义工作流程步骤 激活步骤之前的步骤 使用 ECMA 脚本来实现此目的 这是我到目前为止所拥有的 var workflowData granite
  • 名称属性的 CSS 选择器?

    这可能是一个愚蠢的问题 但是属性的 CSS 选择器是什么 a 那是 名字 document body innerHTML myString anchor HTML String 这段 JavaScript 创建了一个 a 带有名称的元素 H
  • 为什么 html 中的 AngularJS 错误没有显示在控制台中?

    Here s a fiddle http jsfiddle net 6y7odxmj 3 用于说明 当 ng click 指令 例如 调用未在控制器的 scope 或其父级 上定义的函数时 它会默默地失败 当我尝试调试网页时 这种行为令人抓
  • 如何使用Javascript获取ASP.NEt Web Forms标签的值?

    我有以下标签控件
  • 删除数组中所有对象的属性

    我想删除bad数组中每个对象的属性 有没有比使用更好的方法for循环并从每个对象中删除它 var array bad something good something bad something good something for var
  • IE9 中的 HTML5 视频两侧显示黑色边框

    我在我的网站中使用 HTML5 视频标签 该视频在所有浏览器中都能完美播放 但在 IE9 中它显示黑色边框 黑色扩展名 就像通常情况下 当播放器的大小大于视频的大小时 视频播放器会在其两侧显示一些黑色扩展 这是我们使用的解决方案 对于视频
  • 如何使用 Ajax 在 Flask 中发布按钮值而不刷新页面?

    我有一个问题 当我单击 Flask 应用程序中的按钮时 我想避免重新加载 我知道有 Ajax 解决方案 但我想知道如何将我的按钮链接到 ajax 函数以发布按钮值并运行链接到其值的 python 函数 这是我的 html 按钮 div di
  • 如何应对 WebStorm 中大量未解决的变量警告?

    我有一个从服务器获取数据的函数 function getData data console log data someVar 网络风暴说someVar是一个未解决的变量 我怎样才能摆脱这样的警告 我看到几个选项 禁止 IDE 设置中的警告
  • Electron 应用程序中的 NEDB 持久化

    我正在尝试从电子应用程序连接到 nedb CRUD 操作效果很好 但我没有看到 db 文件 D my db 检查隐藏文件 文件存在于某个地方 因为即使在机器重新启动后它也会保留数据 我怀疑电子威胁着我的相对路径 但我可以在任何地方找到它 v
  • 角度距离计算

    我正在使用角度制作距离计算应用程序 Html
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet
  • Fancybox修改。如何修改 fancybox 以停止在每个画廊的最后一项? (画廊 1 画廊 2 等)[重复]

    这个问题在这里已经有答案了 我正在为我的照片库使用 fancybox 插件 我有多个包含更多项目 照片 的画廊 我想知道如何在点击每个画廊的最后一个项目时停止幻灯片放映 我的 fancybox js 没有被修改 谢谢 您需要添加该选项loo

随机推荐

  • 如何从 Java 中的自定义谓词列表创建谓词?

    我对编程比较陌生 过去两天我一直想知道如何创建一个由其他谓词的自定义列表组成的谓词 所以我想出了某种解决方案 下面是一个代码片段 应该可以给您一个想法 因为我只是根据阅读各种文档来编写它 所以我有两个问题 1 这是一个好的解决方案吗 2 对
  • 最大化 R Shiny bs4Dash 中的绘图

    我在网上到处查了一下没有结果 我似乎无法让这些图在最大化盒子时将其高度和宽度最大化到整个窗口大小 这是我使用的要求bs4Dash 我在看这个帖子但提供的解决方案似乎对我不起作用 我缺少什么 library shiny library bs4
  • 使用犰狳和 hdf5 库的简单代码的 C++ 构建错误

    我对 C 和犰狳很陌生 并且遇到了下面描述的构建错误 我正在尝试测试以下简单代码以将犰狳矩阵保存为 hdf5 文件 include
  • 如何获取 Highcharts 树图中钻取事件的当前级别?

    似乎在 Highcharts Treemap 中没有触发下钻事件 我需要执行一些任务 例如在向下钻取和向上钻取事件上显示当前级别编号的警报 如何在树状图中完成此操作 我看到此时您可以捕获重绘事件并准备一个简单的 解析器 来检查ID 第一级的
  • Bash 子 shell 与 ssh 命令的行为非常奇怪

    考虑脚本 s2 bin bash ssh localhost tail 和脚本 s1 bin bash s2 sleep 1000 wait 现在呼叫 s1 它不会调用 ssh 命令 如果你删除 s1 中的 它就会 如果你直接调用 s2 就
  • 如何为 Intellij 编译器提供更多堆空间?

    当我制作 Intellij 项目时 我不断收到以下内存不足错误 我已经增加了堆大小idea vmoptions Xms128m Xmx2048m XX MaxPermSize 1024m XX ReservedCodeCacheSize 6
  • 使用 RSelenium 在 Chrome 中启用 Adblocker 扩展

    我正在从这个页面抓取 R 中的数据 显示弹出广告 这些广告会干扰脚本 因此我想启用广告拦截器扩展 https chrome google com webstore detail adblock gighmmpiobklfepjocnamgk
  • 如何根据用户或电子邮件过滤仪表板内容?

    我正在尝试在 Google Data Studio 上构建一个仪表板 该仪表板会根据访问仪表板的用户 使用其 Google 帐户凭据 自动过滤数据 以下是一些细节 因此 这个仪表板应该为员工显示一些汇总数据 但我们希望限制可见性并实施一些访
  • (无意中)在迭代列表时跳过项目

    我有一个列表 我想从中删除其他列表中未出现的项目 我尝试过以下方法 for w in common for i in range 1 n if not w in words i common remove w 但是 这无法删除某些项目 添加
  • 如何以编程方式使用 Google Analytics API 函数获取指标和维度列表?

    我正在尝试使用 Google Analytics API 需要通过 Google Analytics API 获取指标和维度列表 如何在 php 中使用 Google Analytics API 函数获取指标和维度列表 这无法通过 API
  • 团队构建:使用 MSDeploy 本地发布

    我刚刚开始使用团队构建功能 我发现做一些非常简单的事情所需的大量事情有点令人不知所措 我目前的设置是一个包含 Web 应用程序 组装应用程序和测试应用程序的解决方案 Web 应用程序设置了一个通过文件系统发布的 PublishProfile
  • Magento:将商品添加到购物车时如何更改商品价格

    当我将商品添加到购物车时 我希望能够以编程方式 而不是通过目录或购物车规则 更改商品价格 以下回答以编程方式将产品添加到购物车并更改价格展示了如何在更新购物车时执行此操作 而不是在添加产品时执行此操作 Thanks 您可以使用观察者类来监听
  • 使用 TypeScript 的 React 组件中的默认属性值

    我不知道如何使用 Typescript 为我的组件设置默认属性值 这是源代码 class PageState export class PageProps foo string bar export class PageComponent
  • hibernate加载对象图的正确方法是什么

    假设我有 3 个表 GrandCat Cat 和 Kitt 它们具有一对多的关系 所以我有以下课程 所有关联都是延迟加载 GrandCat int age Set
  • 在 MFC 中添加加速器(快捷方式) - 如何?

    我找到了这个链接 http support microsoft com kb 222829 但我无法理解那么多 好的 我知道我需要将其添加到我的头文件中 HACCEL m hAccelTable 然后是这个 m hAccelTable Lo
  • LaunchDaemons 和环境变量

    一段时间以来 我注意到我的 MacPorts 安装的 Apache2 实例在我启动时尚未启动 MacPorts Apache2 在启动时停止启动 LaunchDaemon 已加载 今天我在日志文件中发现了一些可能指向答案的内容 但我找不到任
  • 启用项目功能时启用 Rust nightly 功能

    在库箱中 我想按需提供回溯并使用 Rust 夜间回溯功能 为了做到这一点 Rust 需要设置 feature backtrace 在我的板条箱根部 有没有办法表达仅当设置了创建级别功能 backtrace 时 我才需要 Rust 夜间功能
  • 使用 Excel 中的 VBA 将 2 个单元格的内容合并到另一个第 3 个单元格中

    我有两个单元格 A1 和 A2 其中每一个的内容都是一个字符串 A1 你好 A2 世界 我的目标是将 A1 和 A2 的内容合并到另一个单元格中 例如A3即A3的内容应该是 你好世界 我想使用 VBA 宏来执行此操作 而不仅仅是将字符串作为
  • 使用 dplyr 按多组进行汇总

    我正在尝试使用 dplyr 来总结基于 2 个组的数据集 年份 和 区域 数据集如下所示 Year Area Num 1 2000 Area 1 99 2 2001 Area 3 85 3 2000 Area 1 60 4 2003 Are
  • 使用 window.onscroll 事件检测页面/框架滚动

    我想定位一个DIV位于页面内 以便即使用户垂直滚动页面 用户也可以看到它 该页面的顶部有一个标题 即75 px高的 现在 当用户位于页面顶部并且没有垂直滚动时 DIV必须位于标题下方 然而 一旦用户滚动页面导致标题消失 同样的DIV现在必须