Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数调用中的Javascript_Javascript_Jquery_Event Listener - Fatal编程技术网

函数调用中的Javascript

函数调用中的Javascript,javascript,jquery,event-listener,Javascript,Jquery,Event Listener,我的客户的网店有一个定制的产品配置程序,它有一个窗口。build\u preview功能 这个方法可以在任何时候调用,但我想检查它何时被调用。 jQuery有一个.on方法,但它只适用于DOM eventlisteners 可以在JS中侦听函数调用吗? 例如: $(window).on(build_preview(), function() { alert('Function has been called somewhere else!'); }) 您可以创建和分派自定义事件 cons

我的客户的网店有一个定制的产品配置程序,它有一个
窗口。build\u preview
功能

这个方法可以在任何时候调用,但我想检查它何时被调用。 jQuery有一个
.on
方法,但它只适用于DOM eventlisteners

可以在JS中侦听函数调用吗? 例如:

$(window).on(build_preview(), function() {
   alert('Function has been called somewhere else!');
})

您可以创建和分派自定义事件

const event = new Event('build_preview');

// Listen for the event.
window.addEventListener('build_preview', 
    function (e) { 
        alert("function has been called somewhere else") 
    },
    false);

// Dispatch the event inside your function build_preview so that whenever it 
// is called this event is emitted.
window.dispatchEvent(event);

有关更多信息,请检查

您可以创建并发送自定义事件

const event = new Event('build_preview');

// Listen for the event.
window.addEventListener('build_preview', 
    function (e) { 
        alert("function has been called somewhere else") 
    },
    false);

// Dispatch the event inside your function build_preview so that whenever it 
// is called this event is emitted.
window.dispatchEvent(event);

有关更多信息,请检查

您可以重载原始函数,在新版本中触发自定义事件,并为自定义事件添加事件侦听器

只需确保在重载代码之前已经声明了原始代码

//原始函数声明
window.build\u preview=函数(){
console.log('.build_preview()调用')
}
//存储对原始函数的引用
const origFn=window.build\u预览
//重载函数
window.build\u preview=函数(){
//称为原创
origFn();
//触发自定义事件
$(window.trigger('build\u preview'))
}
//自定义事件侦听器
$(窗口).on('build\u preview',function(){
log('从build_preview()调用触发的事件');
})


单击我
可以重载原始函数并在新版本中触发自定义事件,并为自定义事件添加事件侦听器

只需确保在重载代码之前已经声明了原始代码

//原始函数声明
window.build\u preview=函数(){
console.log('.build_preview()调用')
}
//存储对原始函数的引用
const origFn=window.build\u预览
//重载函数
window.build\u preview=函数(){
//称为原创
origFn();
//触发自定义事件
$(window.trigger('build\u preview'))
}
//自定义事件侦听器
$(窗口).on('build\u preview',function(){
log('从build_preview()调用触发的事件');
})


单击我
谢谢!这对我有用。但是有没有一种方法可以将数据传递给侦听器呢?您可以使用自定义事件。查看上面的链接,您将在js const event=new CustomEvent('build',{detail:elem.dataset.time})中找到与自定义事件相关的所有内容;非常感谢。这对我有用。但是有没有一种方法可以将数据传递给侦听器呢?您可以使用自定义事件。查看上面的链接,您将在js const event=new CustomEvent('build',{detail:elem.dataset.time})中找到与自定义事件相关的所有内容;