我想知道在调用另一个函数时如何运行函数。 addEventListener
仅运行“click”,“mouseover”等事件。但是,我想监听进行函数调用。
实例:
调用功能1 。之后, Function 2 运行,因为它看到 Function 1 被调用。
对于简单函数而不是事件,是否有addEventListener替代方法?我似乎找不到任何东西。
我的目标是每当用户执行某些操作时简单地运行一个函数,例如当jQuery或其他JavaScript库中隐藏某些内容时,或者只是添加了一些代码时的另一个外部JavaScript文件。
答案 0 :(得分:5)
介绍一种非常黑客的方式
由于您要实现的目标基本上是破解现有系统(如果您能控制双方并正确设计代码,则不应该遇到此问题。)
看起来您的函数也是全局声明的。在这种情况下: 1.将现有函数存储在变量中 2.用你的实现覆盖该功能 3.在开始时调用函数变量
function myFunction(){
//This is the main function
alert('Hello, this is part of the message!');
}
var tempfunc = myFunction;
window.myFunction = function() {
tempfunc();
// do what you need to do in the event listener here
alert('Hello, this is the other part of the message!');
}
编辑:
原始问题要求原始功能无法修改,因此我的解决方案。因为它们似乎已经改变了。
答案 1 :(得分:2)
您将在CBCentral
内触发一个事件并听取该事件。
myFunction
function myFunction(){
//This is the main function
alert('Hello, this is part of the message!');
// trigger the event
var event = new CustomEvent("event", { "detail": "Example of an event" });
document.dispatchEvent(event);
}
// handle here;
document.addEventListener("event", function(){
//This is the secondary function
//or the function I need to run after the main function is called
alert('Hello, this is the other part of the message!');
});
// call main
myFunction();
答案 2 :(得分:0)
对于简单函数是否有addEventListener替代方法而不是 事件?我似乎无法找到任何。
我的目标是每次用户做某事时都运行一个函数 喜欢在jQuery或其他人隐藏某些东西的时候 JavaScript库或只是另一个外部JavaScript文件 我添加了一些代码。
您可以使用jQuery.Callbacks()
var callbacks = $.Callbacks();
function handleCallback1(message) {
console.log(message, this)
};
function handleCallback2(message) {
if (this.tagName === "DIV") {
this.style.color = "green";
} else {
this.nextElementSibling.style.color = "blue";
}
};
$("button, div").on("click", function() {
callbacks.fireWith(this, ["called from " + this.tagName])
});
callbacks.add(handleCallback1, handleCallback2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<button>click</button>
<div>click</div>