2014-02-26 35 views
0

我有幾個實用程序腳本文件被多個擴展使用。到目前爲止,每當我進行更改時,我都會將這些實用程序腳本複製/粘貼到每個擴展程序的根文件夾。這變得越來越不可行。我想從兩個擴展的清單中引用相同的實用程序腳本文件。我曾經嘗試這樣做:Chrome擴展程序清單腳本的相對文件路徑

{ 
    "background": 
    { 
     "scripts": 
     [ 
      "../utils.js", 
      "background.js" 
     ] 
    } 
} 

但是,我當我重裝我的分機,我得到一個擴展錯誤說:

Could not load extension from 'C:\...'. Could not load background script '../../utils.js'.

如果我用反斜槓代替(這似乎是一個更容易的解決方案因爲我正在使用Windows ...),我得到了同樣的錯誤(但是帶有反斜槓)。

它甚至有可能實現這種類型的相對文件路徑?

+1

我這似乎是一個明顯的安全漏洞。也許你可以有一個批處理文件將'utils.js'複製到適當的目錄中? – Teepeemm

回答

1

如何創建一個本地服務器來承載您需要的JS文件,然後您的擴展可以通過本地主機端口訪問這些JS文件並使用它們的功能?一個簡單的輕量級服務器可以做到這一點(也許Python中的bottle.py)。

的Chrome V33收緊擴展的安全,所以我不知道像你在你的manifest.json試圖

讓我知道你解決這個問題,如何讓你可以訪問的文件!

+0

在python中,你不需要使用第三方庫,只需導航到你想要從中提供文件的文件夾,然後在命令行輸入run'python -m SimpleHTTPServer [PortNumber]':) –

+0

哦,我明白了。每天學習新東西:) – supb

1

您是否考慮過使用Shared Modules?根據該文件,你可以從一個擴展,可正是如此導入到另一分機出口通用的功能:

「導出字段指示擴展是一個共享的模塊,它出口的資源:

{ 
    "version": "1.0", 
    "name": "My Shared Module", 
    "export": { 
    // Optional list of extension IDs explicitly allowed to 
    // import this Shared Module's resources. If no whitelist 
    // is given, all extensions are allowed to import it. 
    "whitelist": [ 
     "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 
     "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" 
    ] 
    } 
    // Note: no permissions are allowed in Shared Modules 
} 

進口字段用於通過擴展程序和應用來聲明它們依賴於從特定共享的模塊的資源:

{ 
    "version": "1.0", 
    "name": "My Importing Extension", 
    ... 
    "import": [ 
    {"id": "cccccccccccccccccccccccccccccccc"}, 
    {"id": "dddddddddddddddddddddddddddddddd" 
    "minimum_version": "0.5" // optional 
    }, 
    ] 
} 

+0

如果內容改變或移動,只有鏈接回答沒有幫助。包括鏈接的相關部分和示例代碼,或者將其作爲評論而不是答案提供。 – miken32

+1

好的......我對使用這種技術不夠熟悉;我應該把這個問題當作評論。我的錯。 – rguilbault