Он работает в обоих направлениях, но вам нужно подождать, пока будут установлены слушатели перед отправкой.
Браузеры выполнят JavaScript, как только он будет проанализирован, поэтому будет выполнено следующее ( в хронологическом порядке):
let e = new EventEmitter()
e.emit("fromJSFile", "Emitted from external script") // An event will be emitted on "fromJSFile", but there are no listeners at the execution time
e.on("fromHTMLScript", function(msg){
console.log("Recieved message from HTML script: " + msg)
}) // Adding a listener on "fromHTMLScript"
e.on("fromJSFile", function(msg){
console.log("Received message from external script: " + msg)
}) // Adding a listener on "fromJSFile"
e.emit("fromHTMLScript", "Emitted from HTML script") // An event is emitted on "fromHTMLScript" and caught by the listener
Что вам нужно сделать, так это настроить слушателей как можно скорее (вы можете настроить его даже до полной загрузки страницы), а затем передать с страница полностью загружена.
Например, вы можете записать это в своем JS файле:
let e = new EventEmitter()
e.on("fromHTMLScript", (msg) => {
console.log("Recieved message from HTML script: " + msg)
}) // Register listener on "fromHTMLScript"
document.addEventListener("DOMContentLoaded", () => {
e.emit("fromJSFile", "Emitted from external script")
}); // Emit on "fromJSFile" when the page fully loaded
И это в теге вашего скрипта:
e.on("fromJSFile", function(msg){
console.log("Received message from external script: " + msg)
}) // Register listener on "fromJSFile"
document.addEventListener("DOMContentLoaded", () => {
e.emit("fromHTMLScript", "Emitted from HTML script")
}); // Emit on "fromHTMLScript" when the page fully loaded