Greasemonkey脚本使固定定位元素静态

Rob*_*Rob 3 javascript css firefox greasemonkey

我发现网页上的元素经常被固定在我的位置.我想找到一种方法来禁用position: fixed我访问的任何网站中的CSS规则.

我编写了一个用户脚本(Firefox,Greasemonkey),它扫描文档中的每个节点,并确定它是否已修复计算出的样式位置,然后将其覆盖为静态.

有没有更好的方法来实现我的目标?

这是我写的剧本,我现在把它缩小为div:

Array.forEach(
    document.querySelectorAll("div")
    ,function(el) {
        if (window.getComputedStyle(el).position === 'fixed') {
            el.style.position = 'static';
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

Bro*_*ams 5

如果您的Greasemonkey脚本有效,它可能是消除固定定位样式的最具成本效益的方法.

一些替代方案需要更多的努力但每页使用更少的CPU /内存:

  1. 一个附加组件:

    1. 在加载CSS样式规则时删除它们.(由于跨域问题,Greasemonkey不能总是这样做.)
    2. 使用Mutation Observers拦截javascript尝试设置position: fixed.


  2. 分叉并编译您忽略的自己的Firefox版本position: fixed.您可能希望由"黑名单"和"白名单"控制.