Javascript 需要通过chrome扩展调用匿名函数/插件的帮助吗
我正在开发一个chrome扩展来自动化网站的各个部分。我需要触发链接的点击事件。它有一个通过如下匿名函数的事件处理程序 函数$,对话框{ 函数切换事件{ } 函数addEventListeners{ 窗体。在“单击”、“切换”和“切换”上; } 函数初始化{ } $init; }jQuery,window.silk.classes.dialog 如果不显式调用functionName,javascript中封装在functionName{}块中的任何内容都不会被调用 通常,对于annon init函数,我会执行以下操作:Javascript 需要通过chrome扩展调用匿名函数/插件的帮助吗,javascript,jquery,google-chrome-extension,anonymous-function,Javascript,Jquery,Google Chrome Extension,Anonymous Function,我正在开发一个chrome扩展来自动化网站的各个部分。我需要触发链接的点击事件。它有一个通过如下匿名函数的事件处理程序 函数$,对话框{ 函数切换事件{ } 函数addEventListeners{ 窗体。在“单击”、“切换”和“切换”上; } 函数初始化{ } $init; }jQuery,window.silk.classes.dialog 如果不显式调用functionName,javascript中封装在functionName{}块中的任何内容都不会被调用 通常,对于annon in
(function(params){
toggle();
addEventListeners(); //should change this it's bad to name functions after language defined ones.
init();
})();
function toggle(params){
}
function addEventListeners(){
}
function init(){
}
按照您目前在上面示例中编写代码的方式,addEventListener中的代码永远不会运行,因为从您发布的内容来看,它从未被调用过
如果希望保持现有的方式,还必须从annon函数内部调用函数,因为作用域:
(function($, dialog) {
function toggle(event) {
}
function addEventListeners() {
form.on('click', '.toggle', toggle);
}
function init() {
}
toggle();
addEventListeners();
init();
}(jQuery, window.silk.classes.dialog));
//your functions are now out of scope here, however any eventListeners you attach to the dom will stay defined until that dom element is destroyed.
我设法弄明白了。最后,我试图在匿名函数中触发一个处理程序。下面几行代码就是为了达到这个目的
var btn = document.getElementById('toggle');
btn.addEventListener('click', function() {
this.removeEventListener('click', arguments.callee, false);
}, false);
var event = document.createEvent('Event');
event.initEvent('click', true, true);
btn.dispatchEvent(event);
如果我对您的理解是正确的,您试图从控制台触发此事件以进行测试,那么只有一种可能的方法。为了让控制台了解程序中函数的上下文,必须在断点处停止程序。否则控制台对页面上的javascript一无所知。我不一定需要从控制台调用它。我只需要找到一种通过chrome扩展调用链接的click事件处理程序的方法。如前所述,由于它位于匿名函数中,传统方法不起作用。也许,我没有正确触发点击事件。我只是发布了原始代码的框架。上面的javascript不是我写的,而是在一个我正在开发chrome扩展的网站上。在原始版本中,init确实调用addEventListeners。我只需要弄清楚如何通过内容脚本或注入的JS脚本触发click事件处理程序