通过返回false删除EventListener

时间:2015-11-13 03:10:24

标签: javascript jquery html

我的_()函数接受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();
    }
});

1 个答案:

答案 0 :(得分:0)

尝试添加此功能:

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

如果不起作用,请使用以下内容围绕每个.addEventListener

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