2017-05-05 73 views
0

我剛寫完一個chrome擴展的Alpha,它從字典網頁解析日語並將其呈現爲閃存卡。它是傳遞DOM並解析所有類型數據的單個js。需要幫助才能更好地理解chrome擴展

現在,擴展程序正在網頁內部創建一個div元素來存儲所有數據,並且我想將其從我的擴展名移到彈出窗口。

所以我添加了一個彈出式窗口,點擊該圖標

"browser_action": { 
"default_icon": "icon19.png", 
"default_title": "Tangorin extention is active", 
"popup": "popup.html" 

}

什麼都沒有發生,所以我認爲這可能是因爲我告訴他我的點擊事件處理程序打開一個特定的頁面,所以我需要的東西會告訴它打開彈出窗口。我望向外面,發現一些信息要在你的擴展內部進行連接。

所以我也跟着谷歌公會和不喜歡的東西,在我的事件處理程序

chrome.browserAction.onClicked.addListener(function(activeTab) 
{ 
    var newURL = "http://tangorin.com/examples/"; 
    chrome.tabs.create({ url: newURL }); 
}); 

chrome.runtime.onMessageExternal.addListener(
    function(request, sender, sendResponse) { 
    console.log(sender.tab ? 
       "from a content script:" + sender.tab.url : 
       "from the extension"); 
    if (request.greeting == "hello") 
     console.log("message"); 
    }); 

另外,我覺得被稱爲從網頁,所以我添加權限和東西,將它稱爲我的腳本發送消息。

"externally_connectable": { 
    "matches": ["*://*.tangorin.com/examples/*"] 
    } 

而且會在我的腳本上調用它。

function print_results() { 
    //bla bla 
    chrome.runtime.sendMessage({greeting: "hello"}); 
} 

而且什麼也沒有發生,chrome.runtime.sendMessage不會觸發eventHandler中的函數。

我在正確的軌道上嗎?或者有更好的方法來打開彈出窗口? 我對擴展dev還不是很瞭解,但是直到現在我才設法讓它工作。

由於提前, 或者

編輯:也許不是我可以打開默認彈出時,由於被內容腳本創建的對象,在用戶點擊?

+0

什麼都在開發人員工具控制檯來表明任何問題? –

+0

Chrome擴展程序是您希望在頁面加載時運行的額外腳本。在將腳本作爲擴展運行之前,先在chrome腳本欄上運行腳本以查看日誌和錯誤。 – Vinayk93

+0

@ Vinayk93除了消息部分外,所有腳本都可以工作。 –

回答

1
  1. 列表項
  2. 創建背景腳本background.js。
  3. 添加在您的minifet.json未來:

"background": { "scripts":["background.js"] }

  • 在你background.js腳本添加:

    chrome.runtime.onMessage.addListener(
         function(request, sender, sendResponse) { 
         if (request.greeting == "hello"){ 
          console.log("message"); 
          sendResponse({status:"Message delivered success!"}); 
         }   
    }); 
    
  • 在你的popup.html腳本中添加main.js代碼:

    function print_results() { 
         //bla bla 
         chrome.runtime.sendMessage({greeting: "hello"}); 
        } 
    
  • 並檢查這對於更好地理解https://developer.chrome.com/extensions/messaging。 希望它有幫助。

    +0

    謝謝,我用這個鏈接爲例。我的eventHandler是在minifet.json'「background」中註冊的:{「commands」:[「eventsHandler.js」], 「persistent」:false',並且看起來不像消息觸發的東西。 –

    +0

    另外popup.html還不存在,我使用註冊運行的js,當我進入網站 –

    +0

    也許我可以打開默認彈出窗口,當用戶點擊 –