0

Instapaper の UserStyle の変更に取り組んでいます。元の UserStyle が作成されて以来、Instapaper はページの幅と使用される書体を制御する多数の JavaScript 関数をヘッダーに追加しました。

どうぞ:

        function loadDefaults()
        {
            _fontSize = 16;
            _fontFamily = "G";
            _lineHeight = 1.5;
            _width = 500;
        }

        function loadFont()
        {
            var cookieData = readCookie("fontMetrics");
            if (cookieData && (cookieData = cookieData.split("_")) && cookieData.length == 4) {
                _fontSize = parseInt(cookieData[0]);
                _fontFamily = cookieData[1];
                _lineHeight = parseFloat(cookieData[2]);
                _width = parseInt(cookieData[3]);
            } else loadDefaults();

            applyFont();
        }

これらの関数はロード後に実行されるため、UserScript を変更してこれらの関数をオーバーライドするにはどうすればよいですか?

これまでのところ、これらの関数を空のオーバーライドに単純に置き換えようとしましたが、うまくいきませんでした。私のスクリプトが最初に実行されるので、ヘッダーの JavaScript ブロック全体を削除する方法はありますか?

4

1 に答える 1

1

まず第一に、ユーザースクリプトはユーザースタイルではなくJavaScript用です。次に、Web ページによってスコープunsafeWindowで定義された関数を上書きするために、ユーザー スクリプトで使用したいと考えています。window

したがって、コードは次のようになります。

    unsafeWindow.loadDefaults = function loadDefaults()
    {
        _fontSize = 16;
        _fontFamily = "G";
        _lineHeight = 1.5;
        _width = 500;
    }

    unsafeWindow.loadFont = function loadFont()
    {
        var cookieData = readCookie("fontMetrics");
        if (cookieData && (cookieData = cookieData.split("_")) && cookieData.length == 4) {
            _fontSize = parseInt(cookieData[0]);
            _fontFamily = cookieData[1];
            _lineHeight = parseFloat(cookieData[2]);
            _width = parseInt(cookieData[3]);
        } else loadDefaults();

        applyFont();
    }
于 2012-05-17T19:19:55.663 に答える