2013-10-31 182 views
1

我有很多在它功能的內容腳本調用其他腳本功能,我想能夠將這些功能拆分到其他腳本Chrome擴展引用/從內容腳本

有什麼魔力從內容腳本

我的清單包含調用其他腳本這兩個腳本

"content_scripts":[ 
    { 
    "matches":[ 
     "*://*/*" 
    ], 
    "js":[ 
     "content.js", 
     "other.js", 
    ] 
    } 

]

我的內容腳本,我需要s工作精細

但是如果我在other.js文件放功能,通過它一步,什麼是我在other.js引用是未定義

有什麼我應該知道這裏?

編輯:

這只是一個簡單的例子,測試功能應contentscript負荷運行

contentscript.js

Test(); 

other.js;

function Test(){ 
    return true; 
} 

谷歌告訴我未捕獲的ReferenceError,測試沒有定義

+0

發佈一些代碼。如何/什麼/你在哪裏呼叫哪個功能,以及你期望看到什麼(但不在那裏)? (我提到你應該能夠沒有任何問題的腳本之間的溝通?) – gkalpak

+0

如果上述編輯應該工作,也許有一個加載順序我沒有考慮 –

+0

好的謝謝你的幫助,這是負載清單的順序 –

回答

1

只是爲了增加一點爲尋找關於其他腳本的答案,如以及其他擴展腳本訪問方法。

您可以使用chrome.extension方法以及chrome.runtime通信方法訪問擴展腳本的其餘部分。

  1. 要從擴展中獲取所有腳本的數組,您可以使用extension.getViews方法。

  2. 您還可以使用getBackgroundPage方法獲取後臺腳本或特定後臺腳本。

  3. 另一種選擇是使用message passing傳遞一個腳本的內容與runtime.sendMessage方法,以及使用上的另一腳本的事件監聽器來監聽runtime.onMessage允許腳本從腳本發送接收數據。

  4. 除了前面的選項,你可以使用也可以使用message passing從另一個積極擴展與runtime.sendMessage發送收到劇本,但這次使用的事件偵聽器與runtime.onMessageExternal代替(不能在內容腳本中使用)。

我希望這可以幫助某個人,就像它早些時候幫助我一樣。

5

按照文檔上Content Scripts

JS:的JavaScript文件的列表將被注入匹配頁面。這些按照它們在這個數組中出現的順序被注入。

在你的情況,content.js將被注入第一和嘗試執行otherTest()功能,裝載other.js之前)。

請注意,根據您的清單,這兩個腳本都會在「document_idle」加載,所以即使content.js已經註冊了要加載頁面後要運行的Test()的調用,它仍應該立即運行(因爲頁面是已經加載
如果你希望你的腳本注入加載頁面的內容之前,然後修改您的清單:

"content_scripts": { 
    ... 
    "run_at": "document_start" 
+0

非常感謝您的幫助,正是我需要的信息和大約100次掩蓋的信息,您需要加薪 –

+0

這些都在文檔中:)我總是樂於幫助! (如果您覺得有幫助,請隨時提供我的答案...) – gkalpak

相關問題