Моя идея состоит в том, чтобы позволить двум функциям вызова JavaScript через DOM.
Способ сделать это просто ... Нам просто нужно определить скрытый html-тег js_ipc. После того, как регистр вызываемого абонента щелкнет по скрытому тегу js_ipc, вызывающий абонент может отправить событие щелчка, чтобы вызвать вызываемого. И аргумент сохраняется в том случае, если вы хотите пройти.
Когда нам нужно использовать вышеуказанный способ?
Иногда два кода javascript очень сложно интегрировать, и там так много асинхронного кода. И в другом коде используется разная структура, но вам все равно нужен простой способ их интеграции.
Так что в таком случае сделать это непросто.
При реализации своего проекта я встречаюсь с таким случаем, который очень сложно интегрировать. И, наконец, я обнаружил, что мы можем позволить двум javascript вызывать друг друга через DOM.
Я демонстрирую этот способ в этом коде git. вы можете пройти через это. (Или прочтите его с https://github.com/milochen0418/javascript-ipc-demo )
git clone https:
cd javascript-ipc-demo
git checkout 5f75d44530b4145ca2b06105c6aac28b764f066e
Anywhere, Here, я пытаюсь объяснить следующим простым случаем. Я надеюсь, что этот способ поможет вам интегрировать два разных кода 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));
}