需要帮助通过 chrome 分机呼叫匿名 function/plugin

Need help calling anonymous function/plugin through chrome extension

我正在开发一个 chrome 扩展来自动化网站的某些部分。我需要触发一个link的点击事件。它通过这样的匿名函数具有事件处理程序...

(function($, dialog) {
 function toggle(event) {
 }
 
 function addEventListeners() {
  form.on('click', '.toggle', toggle);
 }

 function init() {
 }

 $(init);
}(jQuery, window.silk.classes.dialog));

$('#elm').click()、trigger()、triggerHandler()等传统方法不起作用。我想我需要在匿名插件中提高 toggle() 函数。

如果有人能帮我弄清楚如何通过控制台触发处理程序,我可以弄清楚如何通过扩展程序触发它。

感谢您的意见。

如果没有显式调用 functionName().

,将不会调用 javascript 中包含在 function functionName(){} 块中的任何内容

通常对于annon init函数我会做:

(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);

我认为你至少有 2 个匿名函数,一个在这个片段中,也在 jquery.js 文件中 由于manifest3 匿名函数是不允许的,所以你必须修改它们,只需设置一个名称并使用它