我的想法是让两个JavaScript通过DOM调用函数。
方法很简单...
我们只需要定义隐藏的 js_ipc html 标签。
被调用者注册后点击隐藏的js_ipc标签,然后
调用者可以调度点击事件来触发被调用者。
并且参数保存在您想要传递的事件中。
什么时候需要使用上述方式?
有时,这两个 javascript 代码集成起来非常复杂,并且有很多异步代码。不同的代码使用不同的框架,但您仍然需要有一种简单的方法将它们集成在一起。
所以,在那种情况下,要做到这一点并不容易。
在我的项目实现中,遇到了这种情况,集成起来很复杂。最后我发现我们可以让两个javascript通过DOM互相调用。
我在这个 git 代码中演示了这种方式。你可以通过这种方式得到它。 (或从https://github.com/milochen0418/javascript-ipc-demo阅读)
git clone https://github.com/milochen0418/javascript-ipc-demo
cd javascript-ipc-demo
git checkout 5f75d44530b4145ca2b06105c6aac28b764f066e
Anywhere,在这里,我尝试通过以下简单的案例来解释。我希望这种方式可以帮助您比以前更容易集成两个不同的 javascript 代码,因为没有任何 JavaScript 库来支持不同团队制作的两个 javascript 文件之间的通信。
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<div id="js_ipc" style="display:none;"></div>
<div id="test_btn" class="btn">
<a><p>click to test</p></a>
</div>
</body>
<script src="js/callee.js"></script>
<script src="js/caller.js"></script>
</html>
还有代码
css/style.css
.btn {
background-color:grey;
cursor:pointer;
display:inline-block;
}
js/caller.js
function caller_add_of_ipc(num1, num2) {
var e = new Event("click");
e.arguments = arguments;
document.getElementById("js_ipc").dispatchEvent(e);
}
document.getElementById("test_btn").addEventListener('click', function(e) {
console.log("click to invoke caller of IPC");
caller_add_of_ipc(33, 22);
});
js/callee.js
document.getElementById("js_ipc").addEventListener('click', (e)=>{
callee_add_of_ipc(e.arguments);
});
function callee_add_of_ipc(arguments) {
let num1 = arguments[0];
let num2 = arguments[1];
console.log("This is callee of IPC -- inner-communication process");
console.log( "num1 + num2 = " + (num1 + num2));
}