vhxubo's blog
关于

监听滚动事件

监听滚动事件

实现针对 Issue 的进度提醒

有的文章下面有很多的评论,而浏览器的滚动条是全局的进度,对阅读很不友好。阮一峰的ES6教程中就实现了文章进度条的功能,很舒服。

思路

实现

使用油猴脚本实现:

// ==UserScript==
// @name         GitHub Issue Read Process
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  GitHub Issue 阅读进度
// @author       Vhxubo
// @match        https://github.com/*/*/issues/*
// @run-at document-end
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    var element = document.querySelector('.js-issue-timeline-container');
    if (element){
        var processEle = document.createElement('div');
        var processStr = document.createTextNode('0%');
        processEle.style.cssText = 'position:fixed;bottom:0px;left:0px;z-index:9999;font-height:800;font-size:2rem;color:#d1d5da;user-select:none';
        processEle.appendChild(processStr);
        document.body.appendChild(processEle);

        window.addEventListener('scroll',function(){
            var process = Number.parseInt((document.documentElement.scrollTop/(element.offsetTop-window.innerHeight))*100);
            if (process >= 0 && process <= 100)
            {
                processEle.innerText = process+'%';
            }else{
                processEle.innerText = '100%';
            }
        })
    }
})();

bug

打开新页面无法完美处理,只能刷新解决

参考链接