添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常

简介: 添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常

则滚动到网页底部。在网上bing搜索了一下,大多是JQuery的。

 我想要纯JavaScript的,只好DIY了。在IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常。

 其中难点在于,setScrollBottom这个函数。

 按常规写法:

function setScrollBottom(value) {
    if (document.documentElement.scrollTop){
       document.documentElement.scrollTop += value;
    } else {
      document.body.scrollTop += value;
    }
  }

在网页第一次载入完成时点击浮动按钮,在IE9、11,Maxthon 1.6.7,Firefox30、31中会无效,在360极速浏览器则有效。

 在IE9、11,Maxthon 1.6.7,Firefox30、31中无效,是因为此时滚动条按钮在顶部,不论document.body.scrollTop还是document.documentElement.scrollTop值都是0,document.documentElement.scrollTop += value;不会被执行,而document.body.scrollTop += value这句虽然会被执行,但由于声明了文档类型,document.body.scrollTop恒为0。

 在360极速浏览器中有效,则是因为即使声明了文档类型,chrome内核仍然不认document.documentElement.scrollTop,只用document.body.scrollTop。

 如果改成:

function setScrollBottom(value) {
    if (document.body.scrollTop){
       document.body.scrollTop += value;
    } else {
       document.documentElement.scrollTop+= value;
    }
  }

效果就会反过来。

 要想两全齐美,当然我们可以通过添加识别浏览器类型的代码来进行区分并做相应处理,不过我们可以利用document.body.scrollTop值是否恒为0这一点来做简单的区分,如下面的演示代码所示。

 

 btw,在网上找到两个直接沉底的简单代码:

 其1:

<a href="#1" οnclick="window.scrollTo(0,99999);return false;">跳到网页底部方法1</a>

思路:document.all[document.all.length-1]获得最后一个元素。scrollIntoView()滚动到视线内。IE和FireFox都行。文档最末元素不在最底下时不适用。

 其2:

<a href="#1" οnclick="window.scrollTo(0,99999);return false;">跳到网页底部方法2</a>

思路:只要滚动到一个很远很远的地方就可以了。

 也一并放入演示代码里了。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
<HEAD>
<TITLE>添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码(goBottom)by PurpleEndurer</TITLE>
<style type="text/css">
#goBottomBtn  {float:right; POSITION: fixed; TEXT-ALIGN: center; LINE-HEIGHT: 20px; WIDTH: 30px; BOTTOM: 65px; FONT-SIZE: 12px; CURSOR: pointer; RIGHT: 0px; _position: absolute; _right: auto; border: 1px solid gray; background:green; color:white;}
</style>
</HEAD>
<BODY>
<p>添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码(goBottom) by PurpleEndurer <a href="http://blog.csdn.net/purpleendurer">http://blog.csdn.net/purpleendurer</a></p>
<p>IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常</p>
<p><a href="#1" οnclick="window.scrollTo(0,99999);return false;">跳到网页底部方法1</a>  <a href="#1" οnclick="window.scrollTo(0,99999);return false;">跳到网页底部方法2</a></p>

<script type="text/javascript">
<!--
//添加99行文字
function writeLine()
{
  for (var j=0; j < 100; j++)
  {
    document.writeln('<p>'+ j +' 添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码<p>');
  }
}
writeLine();


function goBottomEx()
{
  function addGoBottomDiv()
  {
    var div = document.createElement('div');
    div.innerHTML = '<br /><span style="font-size:30px;" title="直达底部">↓</span>';
    div.setAttribute('id', 'goBottomBtn');
    document.body.appendChild(div);
  }

  var o = document.getElementById('goBottomBtn');
  if (null==o)
  {
    addGoBottomDiv();
    showBottomBtn();
  }
  o = document.getElementById("goBottomBtn");

  function getScrollTop()
  {
    return document.documentElement.scrollTop || document.body.scrollTop;
  }

  function setScrollBottom(value) {
    document.body.scrollTop += value;

    if (0==document.body.scrollTop){
       document.documentElement.scrollTop += value;
    }
  }

  function isBottom() {
    var a = document.documentElement.clientHeight || document.body.clientHeight;
    var b = document.documentElement.scrollTop || document.body.scrollTop; 
    var c = document.documentElement.scrollHeight || document.body.scrollHeight;

    return (a+b >= c);
  }

  function showBottomBtn(){
    var o = document.getElementById('goBottomBtn');
    o.style.display = isBottom() ?  "none" : "";
  }

  window.onscroll = function() {
    showBottomBtn();
  }

  o.onmousemove = function() {
    this.style.background = "#33cc66";
  }

  o.onmouseout = function() {
    this.style.background = "green";
  }

  o.onclick = function() {
    var goBottom = setInterval(scrollMove, 10);
    function scrollMove() {
      setScrollBottom((getScrollTop() + 100) / 5); //网页刚载入完成时getScrollTop()返回值为0
      if (isBottom()) {clearInterval(goBottom);}
    }//scrollMove()
  }//o.onclick
}//goBottomEx()

goBottomEx()

//-->

</script>
</BODY>
</HTML>
相关文章
|
1月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
2月前
|
存储 JavaScript 前端开发
使用JavaScript构建动态交互式网页:从基础到实践
【10月更文挑战第12天】使用JavaScript构建动态交互式网页:从基础到实践
156 1
|
1天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
49 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
48 5
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
133 1
|
1月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
27 2
|
2月前
|
存储 JavaScript 前端开发
【JavaScript】网页交互的灵魂舞者
本文介绍了 JavaScript 的三种引入方式(行内、内部、外部)和基础语法,包括变量、数据类型、运算符、数组、函数和对象等内容。同时,文章还详细讲解了 jQuery 的基本语法和常用方法,如 `text()`、`html()`、`val()`、`attr()` 和 `css()` 等,以及如何插入和删除元素。通过示例代码和图解,帮助读者更好地理解和应用这些知识。
36 1
【JavaScript】网页交互的灵魂舞者
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
73 1
|
2月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
399 1
|
2月前
|
人工智能 监控 JavaScript
模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域
模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域
35 1

热门文章

最新文章