如何使用CEP/JavaScript声明一次"beforeClose"事件?

How to declare the "beforeClose" event once time using CEP/JavaScript?

我需要知道用户何时决定关闭他所在的文档,所以我在各种站点上找到了“beforeClose”事件。

我有两个问题:

这是我目前在我的 jsx 文件中的做法:

main();

function main() {
    app.addEventListener("beforeClose", detectClose);
}

function detectClose() {
    alert('The document is closed'); 
}

提前感谢您的帮助!

不确定是否理解它应该如何工作,但我看到了两个选项。 (1) 可以检查是否已有相同事件类型的监听器,如果没有则添加新的监听器:

main();

function main() {
    if (if_not_exists('beforeClose')) app.addEventListener('beforeClose', detectClose);
}

function detectClose() {
    alert('The document is closed');
}

function if_not_exists(eventType) {
    var listeners = app.eventListeners;
    var i = listeners.length
    while (i--) if (listeners[i].eventType == eventType) return false;
    return true;
}

(2) 或者您可以使用如下函数预先删除所有侦听器(对于给定的事件类型):

function remove_listeners(eventType) {
    var listeners = app.eventListeners;
    var i = listeners.length
    while (i--) if (listeners[i].eventType == eventType) listeners[i].remove();
}