需要帮助通过chrome扩展名调用匿名函数/插件

时间:2015-09-15 18:25:17

标签: javascript jquery google-chrome-extension anonymous-function

我正在开发一个chrome扩展来自动化网站的各个部分。我需要触发链接的click事件。它有一个通过像这样的匿名函数的事件处理程序......

(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()函数。

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

感谢您的投入。

2 个答案:

答案 0 :(得分:0)

如果没有明确调用function functionName(){},则不会调用javascript中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.

答案 1 :(得分:0)

我设法搞清楚了。在一天结束时,我试图在匿名函数中触发处理程序。以下代码行为此服务。

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