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 而不是用户样式。其次,您想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 回答