Tôi có một đối tượng có các phương thức trong đó. Các phương thức này được đưa vào đối tượng bên trong một hàm ẩn danh. Nó trông như thế này:
var t = {};
window.document.addEventListener("keydown", function(e) {
t.scroll = function(x, y) {
window.scrollBy(x, y);
};
t.scrollTo = function(x, y) {
window.scrollTo(x, y);
};
});
(có rất nhiều mã nữa, nhưng điều này đủ để cho thấy vấn đề)
Bây giờ tôi muốn dừng trình nghe sự kiện trong một số trường hợp. Vì vậy, tôi đang cố gắng thực hiện removeEventListener nhưng tôi không thể tìm ra cách thực hiện việc này. Tôi đã đọc trong các câu hỏi khác rằng không thể gọi removeEventListener trên các hàm ẩn danh, nhưng đây cũng là trường hợp của trường hợp này?
Tôi có một phương thức trong t được tạo bên trong hàm ẩn danh và do đó tôi nghĩ rằng nó có thể. Trông như thế này:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Tại sao tôi không thể làm điều này?
Có cách nào khác (tốt) để làm điều này không?
Thông tin tiền thưởng; điều này chỉ có thể hoạt động trong Safari, do đó không hỗ trợ IE.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
và sau đó thực hiện Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false); ... và tương tự đối với removeEventListener. Hy vọng bạn có thể thấy điều này ổn.