2016-01-11 19 views
0

我太新有關使Chrome擴展程序和出頭發送變量,我會嘗試:從「browser_action」到「content_scripts」

我會從「browser_action」到「content_scripts」


發送JS變量
"browser_action": { 
    "default_popup": "src/browser_action/index.html" 
}, 
"content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": ["src/inject/inject.js"] 
    } 
] 

實施例:如果...

的src/browser_action/main.j S:(browser_action)

var MyVar = "Hello world"; 

以及如何發送MyVar的src /注射/ inject.js? Like ..

// What function I should do before to alert()? 
if (typeof MyVar !== 'undefined') { 
    alert(MyVar); 
} 

回答

2

如果要從後臺向內容腳本發送消息(或數據),可以使用chrome.tabs.sendMessage()。但是您需要指定哪個選項卡(使用tabId)將其發送到。您應該閱讀message passing in extensions

實施例:

在所選擇的標籤發送消息給內容腳本

main.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { 
    console.log(response.farewell); 
    }); 
}); 

在接收端,則需要設置up一個chrome.runtime.onMessage事件監聽器來處理消息

inject.js:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") 
     sendResponse({farewell: "goodbye"}); 
    }); 
+0

感謝。但是如何在不打開「browser_action」的情況下獲得'message'?可能嗎? – l2aelba

+1

使用後臺腳本:https://developer.chrome.com/extensions/background_pages – Sid

0

chrome.storage#ref

例做到了:

添加 「存儲」 權限上manifest.json的

"permissions": [ 
    "storage" 
] 

在main.js(browser_action)

chrome.storage.sync.set({'user':{email:'[email protected]'}}); 

在inject.js(content_scripts)

chrome.storage.onChanged.addListener(function(c,a){ 
    chrome.storage.sync.get('user',function(o){ 
     if(!$.isEmptyObject(o)){ // Check via jQuery function 
      // Do somethings... 
      console.log(o.user.email); 
     } 
    }); 
}); 
相關問題