2010-09-06 66 views
0

我正在修改Instapaper的UserStyle。由于原始的UserStyle已经编写完成,Instapaper在它们的头文件中添加了一些JavaScript函数,这些函数控制着页面的宽度和使用的字体。用UserStyle替换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

你在哪里在Instapaper的获得UserStyle修改。在帐户设置中,我看不到任何修改用户样式的可能性。 – 2010-09-06 19:50:03

+0

我从http://userscripts.org/scripts/show/73567使用Fluid.app和Instapaper Threestyled Narrow脚本 – 2010-09-07 01:07:00

回答

1

首先,userscripts是为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(); 
    }