从https://developer.chrome.com/extensions/pageAction.html#event-onClicked如何分辨点击页面动作时:当点击页面动作图标当页面操作有一个弹出
chrome.pageAction.onClicked.addListener(function(tabs.Tab tab) {...});
触发。如果页面操作有弹出窗口,则该事件不会触发。
那么如何判断页面动作是否被点击,如果它使用弹出?
从https://developer.chrome.com/extensions/pageAction.html#event-onClicked如何分辨点击页面动作时:当点击页面动作图标当页面操作有一个弹出
chrome.pageAction.onClicked.addListener(function(tabs.Tab tab) {...});
触发。如果页面操作有弹出窗口,则该事件不会触发。
那么如何判断页面动作是否被点击,如果它使用弹出?
当设置弹出窗口时,单击该按钮会导致弹出页面被加载并显示。同时,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
});
的可能的重复http://stackoverflow.com/questions/17645977/bypassing-the-no-popup-if-i-want-a-javascript-to-运行时扩展,点击/ 17646630。 – sowbug