2012-07-27 35 views
0

我在后台脚本中有一些代码。我希望能够以火一样的东西:如何触发并绑定Chrome扩展中的任意事件?

$(document).trigger('someEvent', [args]); 

,然后在弹出听它是这样的:

var backgroundPage = chrome.extension.getBackgroundPage(); 
$(backgroundPage.document).bind('someEvent', function (args) {...}); 

但是,这并不工作。触发器代码被触发,但显然我没有对正确的事物进行绑定。帮帮我?

+0

你为什么不使用专用[消息传递(http://code.google.com/chrome/extensions/messaging.html)模块?通过简单的添加,您也可以支持事件。 – pimvdb 2012-07-27 18:54:03

+0

1. jQuery是在弹出的*和*背景页面中加载的吗? 2.任何内嵌JavaScript(如果是,请阅读[CSP](http://code.google.com/chrome/extensions/contentSecurityPolicy.html))。 3.你是否在触发前约束事件? 3.为什么在使用函数时可以以非复杂的方式完成相同的事件? 'chrome.extension.getBackgroundPage()。customMethod();'和/或['chrome.extension.getViews()'](http://code.google.com/chrome/extensions/extension.html#method-getViews )。 – 2012-07-27 19:59:40

+0

其实,@ pimvdb,这正是我所做的。 – 2012-07-27 20:51:39

回答

2

我真的不知道的JQuery因此Im没有帮助那里,但认为Id指出的是,它似乎工作JS方式....

manifest.json的

{ 
    "name": "TEST - Background to PopUp Event Triggering", 
    "version": "1.0", 
    "permissions": [ 
    "tabs", "http://*/*", "https://*/*" 
    ], 
    "browser_action": { 
     "default_title": "TEST - Background to PopUp Event Triggering", 
     "default_icon": "icon.png", 
     "default_popup": "popup.html" 
    }, 
    "background": { 
    "scripts": ["background.js"] 
    }, 
    "manifest_version" : 2 
} 

popup.html

<!doctype html> 
<html> 
    <head> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    </body> 
</html> 

popup.js

var backgroundPage = chrome.extension.getBackgroundPage(); 

backgroundPage.document.addEventListener('myCustomEvent', function(e) { 
    document.write(e.args + '\n'); 
}) 

background.js

var customEvent = document.createEvent('Event'); 
customEvent.initEvent('myCustomEvent', true, true); 

setInterval(function() { 
    customEvent.args=["bunyips","smell"]; 
    document.dispatchEvent(customEvent); 
}, 3000); 
+0

有趣。最初,我正在使用jQuery来 - 理论上 - 完全按照上面的说法做。它失败了。我想jQuery可能是罪魁祸首。 – 2012-07-27 23:46:33

相关问题