3

Web ページで、配置が固定されている要素が邪魔になることがよくあります。position: fixedアクセスするすべての Web サイトで 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. ミューテーションオブザーバーを使用して、JavaScriptが設定しようとする試みをインターセプトしますposition: fixed


  2. を無視する独自のバージョンのFirefoxをフォークしてコンパイルしますposition: fixed。これは、「ブラックリスト」と「ホワイトリスト」の両方で制御する必要があります。

于 2012-12-04T05:02:41.553 に答える