通过返回false删除EventListener

Remove EventListener by returning false

本文关键字:删除 EventListener false 返回      更新时间:2023-09-26

My _()函数获取HTML元素ID并返回document.getElementById(str)。下面我有许多eventListener,它们要么监听按钮点击,要么监听键盘事件。然而,由于该JS文件在许多页面之间共享,某些页面不存在某些HTML元素,因此addEventListener()函数每次尝试将事件侦听器绑定到不存在的HTML元素时都会抛出错误并终止执行如何防止这种情况发生并让代码继续执行?换句话说,我怎样才能发现这些错误

function _(str) {
    var k = document.getElementById(str);
    if(k){
        return document.getElementById(str);
    } else {
        return false;
    }
}

document.addEventListener("DOMContentLoaded", function () {
    //Button Event Listeners
    _("commentlink").addEventListener("click", showCommentBox);
    _("help_retract").addEventListener("click", function () {
        $(".help_box").toggle(500);
        _("commentlink").style.display = "block";
        $("#commentbox").hide();
    })
    _("help_link").addEventListener("click", function () {
        $("#help_box").toggle(500);
    });
    _("q-help-link").addEventListener("click", function (){
        $("#q-help").toggle(500);
    });
    _("comment-textbox").addEventListener("keyup", checkCharLength);
    _("submit-comment").addEventListener("click", submitComment);
    _("voteUp").addEventListener("click", function () {
        submitVote(1);
    })
    _("voteDown").addEventListener("click", function () {
        submitVote(-1);
    })
    //Automatic Events:
    if (checkCookie("comm_sub")) {
        showCommentBox();
    }
});

尝试添加此函数:

window.onerror = function(){
    return true;
}

如果这不起作用,用包围每个.addEventListener

try {
    // .addEventListener here
} catch (e) { // Ignore Errors }