gpt4 book ai didi

javascript - 将事件处理程序移动到 javascript 函数中

转载 作者:行者123 更新时间:2023-11-29 01:45:42 27 4
gpt4 key购买 nike

我基本上需要做的是将这些代码行附加到这个文件中。 http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/aboutDownloads.js

window.addEventListener("DOMContentLoaded", function() {handle_events();}, true);
window.addEventListener("unload", function() {Downloads.uninit();}, false);

function handle_events(){
window.addEventListener("DOMContentLoaded", function() {Downloads.init();}, true);
document.getElementById("contextmenu-open").addEventListener("click", ContextMenus.open, false);
document.getElementById("contextmenu-retry").addEventListener("click", ContextMenus.retry, false);
document.getElementById("contextmenu-remove").addEventListener("click", ContextMenus.remove, false);
document.getElementById("contextmenu-pause").addEventListener("click", ContextMenus.pause, false);
document.getElementById("contextmenu-resume").addEventListener("click", ContextMenus.resume, false);
document.getElementById("contextmenu-cancel").addEventListener("click", ContextMenus.cancel, false);
document.getElementById("contextmenu-removeall").addEventListener("click", ContextMenus.removeAll, false);
}

但是当我这样做时,我得到一个 javascript 错误提示

JavaScript Error: "TypeError: aElement is undefined" {file: "chrome://browser/content/aboutDownloads.js" line: 435}

多次。我怎样才能解决这个问题?。这是 Firefox for android 项目的部分代码。

最佳答案

将您的方法调用包装在一个匿名函数中,如下所示:

document.getElementById("contextmenu-open").addEventListener("click", ContextMenus.open, false);

为此:

document.getElementById("contextmenu-open").addEventListener("click", function() {ContextMenus.open()}, false);

这会将 ContextMenus 对象保留为该方法的调用者,并确保在调用该方法时正确设置了 this


此外,我认为您不想在 'handle_events() 中安装 DOMContentLoaded 事件处理程序,因为DOMContentLoaded 已经在那个时候触发您正在调用handle_events()来自DOMContentLoaded` 事件处理程序。

对于Downloads.init(),直接在handle_events()的第一行调用即可。 DOM 已经加载,因此您只需调用它,无需等待事件。

关于javascript - 将事件处理程序移动到 javascript 函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670421/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com