我正在修改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块?
答案 0 :(得分: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();
}