簡體   English   中英

需要幫助通過 chrome 擴展調用匿名函數/插件

[英]Need help calling anonymous function/plugin through chrome extension

我正在開發一個 chrome 擴展來自動化網站的某些部分。 我需要觸發鏈接的點擊事件。 它通過像這樣的匿名函數有一個事件處理程序......

 (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 匿名函數是不允許的,所以你必須修改它們,只需設置一個名稱並使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM