2010-09-06 63 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(); 
    }