需要帮助通过 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 匿名函数是不允许的,所以你必须修改它们,只需设置一个名称并使用它
我正在开发一个 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()
.
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 匿名函数是不允许的,所以你必须修改它们,只需设置一个名称并使用它