【问题标题】:Greasemonkey script to make Fixed Positioned Elements StaticGreasemonkey 脚本使固定定位元素成为静态
【发布时间】:2012-12-04 04:28:12
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 只是想知道为什么要这样做?它不会破坏一些“依赖”固定定位的样式吗?我知道这与问题无关,我只是想知道
  • @Ian 也许他在做截图插件?
  • 我已经习惯在桌面上缩放页面,直到主要内容填满窗口,就像在手机上查看页面一样。也许我老了。固定位置元素经常覆盖内容。我认为固定元素一般是脱离页面内容的,所以我不期望有太多的破损。
  • for(var a=document.querySelectorAll("*"),i=0,e;e=a[i];i++)"fixed"==getComputedStyle(e).position&&(e .style.position="static") -Jeremy Ashkenas
  • 上一条评论似乎包含零宽度空格,出于某种原因,因此它不是可复制粘贴的(尽管它确实有效)。

标签: javascript css firefox greasemonkey


【解决方案1】:

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

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

  1. an Add-on那个:

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多