1

这可以在 IE 和 Chrome 中找到,但是,在 Firefox 中,我得到了错误:

“TypeError:值未实现接口 EventListener。”

这段代码是由一个 php 脚本发布的,所以我必须添加 if 语句来确定 id 是否存在,首先,以避免 Chrome 中的错误。

这是代码:

HTML <a id="Logout">Logout</a>

JavaScript

if (document.getElementById("Logout") != null) {
    var Logout_Link = document.getElementById("Logout");
    Logout_Link.addEventListener('click', Logout, true);

    function Logout() {            
        var just_logged_out = 1;
        window.location.href = "logout-redirect.php";
    }
}
4

1 回答 1

4
if (…) {
    function …() {            
        …
    }
}

是无效的。函数声明必须在函数或程序主体的顶层,在块内部,它们的行为是依赖于实现的。将其移到 if 语句之外:

function Logout() {            
    var just_logged_out = 1;
    window.location.href = "logout-redirect.php";
}

if (document.getElementById("Logout") != null) {
    var Logout_Link = document.getElementById("Logout");
    Logout_Link.addEventListener('click', Logout, true);
}

因此,如果函数没有 [正确] 声明,那么奇怪的错误消息是什么?您可能已经预料到类似WRONG ARGUMENTS ERROR: handler is 'undefined'. 但实际上它不是,Logout确实是指您的链接元素。这确实没有实现EventListener接口(JavaScript 函数可以)。

于 2013-07-24T22:00:22.333 回答