这个 _onLoadListener 函数什么时候注册的呢?
iframe 完成加载之后,就触发这个 load 事件注册的处理函数:
PDFViewer.prototype.onAfterRendering = function () { var fnInitIframeElement = function () { // cant use attachBrowserEvent because it attach event to component root node (this.$()) // load event does not bubble so it has to be bind directly to iframe element var oIframeElement = this._getIframeDOMElement(); oIframeElement.on("load", this._onLoadListener.bind(this)); oIframeElement.on("error", this._onErrorListener.bind(this));
load 事件:
application/pdf 是支持的 mime type:
判断浏览器是否支持直接查看 pdf 文件的方法:
点了 loading errors 之后,bContinue 标志位为 false,因为此时 oTarget[0].contentWindow.document.embeds 为空:
所以进入此处的 else 分支:
在 PDFViewer.prototype._renderErrorState 里,把下载按钮设置为 disabled:
在函数 PDFViewerRenderer.renderPdfContent 里: