3

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

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

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

这是我写的脚本,我现在把它缩小到 div:

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

1 回答 1

5

如果您的 Greasemonkey 脚本有效,它可能是消除固定位置样式的最经济有效的方法。

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

  1. 编写一个附加组件

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


  2. Fork 并编译您自己的忽略position: fixed. 您可能希望它由“黑名单”和“白名单”控制。

于 2012-12-04T05:02:41.553 回答