2013-06-23 88 views
1

我試圖找到一種方法來更改擴展程序的圖標,一旦彈出窗口是打開或徘徊。 我找到了一種方法打開彈出窗口什麼時候做,使用:Chrome擴展程序 - 更改彈出圖標onClick/onHover

chrome.browserAction.onClicked.addListener(updateIcon); 

,但找不到辦法趕上彈出關閉事件。我試圖從彈出代碼中使用它:

var port = chrome.runtime.connect(); 
    port.onDisconnect.addListener(function() 
    { 
    alert('closed'); 
    }); 

但是不成功。

任何想法?

謝謝。

回答

2

假設在彈出的頁面連接到後臺腳本,嘗試Port.onDisconnect代碼移動到後臺腳本:

port.onDisconnect.addListener(function() 
    { 
    alert('closed'); 
    }); 

我假設你的方式是行不通的,你關閉,因爲後彈出,它已經死了,無法檢測到Port.onDisconnect事件。如果你將它移動到你的後臺腳本,它應該仍然活着,當端口被斷開時會被通知,並且可以改變按鈕的圖標本身!

至於更改圖標,當擴展盤旋時,它將取決於您是在工具欄上的按鈕懸停時執行此操作還是在彈出頁面懸停時執行此操作。如果你是指前者,我不認爲這是可能的。如果你的意思是後者,彈出頁面應該能夠通過事件監聽器和你的「updateIcon」函數來完成。

+0

謝謝耶利米! 假設我將port.onDisconnect移動到backgrond.js,如何訪問端口對象? 而對於懸停問題,我的意思是第一個選項(當彈出窗口關閉時)... – Meytaln

+0

@Meytaln您需要添加一個[chrome.runtime.onConnect](http://developer.chrome.com/ extensions/runtime.html#event-onConnect)偵聽器到您的背景頁面並從中獲取端口。根據您的標準,我不知道您在用戶懸停在您的分機圖標上時可以檢測到的任何方式。祝你好運! –

+0

非常感謝!它的工作完美:) – Meytaln