添加浮动按钮点击滚动到网页底部的纯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>
相关文章
|
JavaScript 算法 开发者
如何用JS实现在网页上通过鼠标移动批量选择元素的效果?
本文介绍了类似电脑桌面通过鼠标选择多个图标的实现原理。主要通过监听mousedown、mousemove和mouseup事件,动态调整选择框大小并计算与元素的重叠情况。提供了角重叠和相交重叠的检测方法,并附有示例代码和在线演示链接,方便开发者参考与测试。
486 56
|
11月前
|
Web App开发 搜索推荐 安全
火狐(Mozilla Firefox)浏览器安装教程,附火狐(Mozilla Firefox)安装包
火狐浏览器2025年8月最新版141.0.2发布,支持Windows、Mac、安卓系统,运行速度快,安全性高。提供离线安装包下载,支持多种网络标准,个性化定制功能丰富,安装简便,可自定义安装路径并恢复上次浏览标签,带来更流畅上网体验。
3994 6
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
1883 58
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
存储 JavaScript 前端开发
使用JavaScript构建动态交互式网页:从基础到实践
【10月更文挑战第12天】使用JavaScript构建动态交互式网页:从基础到实践
882 1
|
11月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
3306 0
|
数据采集 Web App开发 JavaScript
Python爬虫如何获取JavaScript动态渲染后的网页内容?
Python爬虫如何获取JavaScript动态渲染后的网页内容?
|
Web App开发 安全 前端开发
一个接口4个步骤轻松搞定最新版Chrome、Edge、Firefox浏览器集成ActiveX控件
目前的浏览器市场,谷歌浏览器占据了半壁江山,因此,谷歌也是最有话语权的,2015年开始取消支持 NPAPI 插件,2022 年10月停止支持 PPAPI 插件;而曾经老大哥IE浏览器也已停止服务,退出历史舞台,导致大量曾经安全、便捷的ActiveX控件无法使用。为了解决这个难题,本人特研发出allWebPlugin中间件,重新让所有ActiveX控件能在谷歌、火狐等浏览器使用。
1540 14
|
存储 JavaScript 前端开发
【JavaScript】网页交互的灵魂舞者
本文介绍了 JavaScript 的三种引入方式(行内、内部、外部)和基础语法,包括变量、数据类型、运算符、数组、函数和对象等内容。同时,文章还详细讲解了 jQuery 的基本语法和常用方法,如 `text()`、`html()`、`val()`、`attr()` 和 `css()` 等,以及如何插入和删除元素。通过示例代码和图解,帮助读者更好地理解和应用这些知识。
257 1
【JavaScript】网页交互的灵魂舞者