2013-07-19 37 views
2

https://developer.chrome.com/extensions/pageAction.html#event-onClicked如何分辨点击页面动作时:当点击页面动作图标当页面操作有一个弹出

chrome.pageAction.onClicked.addListener(function(tabs.Tab tab) {...});

触发。如果页面操作有弹出窗口,则该事件不会触发。

那么如何判断页面动作是否被点击,如果它使用弹出?

+1

的可能的重复http://stackoverflow.com/questions/17645977/bypassing-the-no-popup-if-i-want-a-javascript-to-运行时扩展,点击/ 17646630。 – sowbug

回答

5

当设置弹出窗口时,单击该按钮会导致弹出页面被加载并显示。同时,onClicked事件不会被触发。因此,如果您想在设置弹出窗口时检测到点击,请在popup.js中放入一些代码。

例如:如果你的代码,而弹出的样子:

// background/event page 
chrome.pageAction.onClicked.addListener(function(tab) { 
    // Do something 
}); 

然后从background/event页面的代码,并把在popup.js代码:

document.addEventListener('DOMContentLoaded', function() { 
    // Do something, e.g. send a message to content or background script 
}); 

如果将逻辑保留在后台页面中很重要,例如如果你正在发起一个HTTP请求,数据库访问等等,然后用message passing通知后台页面被点击的按钮:

// popup.js 
chrome.runtime.sendMessage('pageActionClicked'); 

// background.js 
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { 
    if (message === 'pageActionClicked') { 
     // Do something 
    } 
}); 

如果你要知道当前选项卡(如tab参数在pageAction.onClicked事件),使用chrome.tabs.query

// Inside the DOMContentLoaded or onMessage event listener: 
chrome.tabs.query({ 
    active: true, 
    lastFocusedWindow: true 
}, function(tabs) { 
    var tab = tabs[0]; 
    // Do something with tab 
}); 
相关问题