我使用一个复杂的Javascript软件并尝试了解它是如何构建的。这是pdf.js,但对于这个问题并不重要。这是一个更多的软件设计方向的问题,而不是它在这个特定情况下的工作方式(我可以自己阅读)。我想知道为什么他们在简单点击按钮的情况下使用事件
示例:
appConfig.toolbar.openFile.addEventListener('click', function (e) {
PDFViewerApplication.eventBus.dispatch('openfile');
});
appConfig.toolbar.openFile是一个Dom-Element,恰好是点击按钮。因此,click事件将调度事件 openfile 。
eventBus.on('openfile', webViewerOpenFile);
此事件触发函数
function webViewerOpenFile() {
...do stuff
}
在某些情况下,但并非所有情况下,中间还有一个步骤,我现在还不明白:Eventbus会创建旧的克隆事件。
eventBus.on('pagemode', function (e) {
var event = document.createEvent('CustomEvent');
event.initCustomEvent('pagemode', true, true, {
mode: e.mode,
});
e.source.pdfViewer.container.dispatchEvent(event);
});
我真的看不出这种复杂方式的优势。为什么不像往常一样将函数绑定到Dom-Element,如下所示:
appConfig.toolbar.openFile.addEventListener('click', webViewerOpenFile);
也许有人可以点缀我?