Skip to content

Commit c76bbb4

Browse files
Fixes legalthings#30: Ability to unbind events registered by pdf viewer
1 parent ea77fe8 commit c76bbb4

File tree

1 file changed

+79
-26
lines changed

1 file changed

+79
-26
lines changed

pdf.js

Lines changed: 79 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12873,6 +12873,7 @@ var PDFViewerApplication = {
1287312873
url: '',
1287412874
baseUrl: '',
1287512875
externalServices: DefaultExernalServices,
12876+
_boundEvents: {},
1287612877
initialize: function pdfViewInitialize(appConfig) {
1287712878
var self = this;
1287812879
var PDFJS = pdfjsLib.PDFJS;
@@ -13617,32 +13618,84 @@ var PDFViewerApplication = {
1361713618
eventBus.on('findfromurlhash', webViewerFindFromUrlHash);
1361813619
eventBus.on('fileinputchange', webViewerFileInputChange);
1361913620
},
13620-
bindWindowEvents: function pdfViewBindWindowEvents() {
13621-
var eventBus = this.eventBus;
13622-
window.addEventListener('wheel', webViewerWheel);
13623-
window.addEventListener('click', webViewerClick);
13624-
window.addEventListener('keydown', webViewerKeyDown);
13625-
window.addEventListener('resize', function windowResize() {
13626-
eventBus.dispatch('resize');
13627-
});
13628-
window.addEventListener('hashchange', function windowHashChange() {
13629-
eventBus.dispatch('hashchange', { hash: document.location.hash.substring(1) });
13630-
});
13631-
window.addEventListener('beforeprint', function windowBeforePrint() {
13632-
eventBus.dispatch('beforeprint');
13633-
});
13634-
window.addEventListener('afterprint', function windowAfterPrint() {
13635-
eventBus.dispatch('afterprint');
13636-
});
13637-
window.addEventListener('change', function windowChange(evt) {
13638-
var files = evt.target.files;
13639-
if (!files || files.length === 0) {
13640-
return;
13641-
}
13642-
if (evt.target.id == PDFViewerApplication.appConfig.openFileInputName)
13643-
eventBus.dispatch('fileinputchange', { fileInput: evt.target });
13644-
});
13645-
}
13621+
bindWindowEvents: function pdfViewBindWindowEvents() {
13622+
var eventBus = this.eventBus,
13623+
_boundEvents = this._boundEvents;
13624+
_boundEvents.windowResize = function () {
13625+
eventBus.dispatch('resize');
13626+
};
13627+
_boundEvents.windowHashChange = function () {
13628+
eventBus.dispatch('hashchange', { hash: document.location.hash.substring(1) });
13629+
};
13630+
_boundEvents.windowBeforePrint = function () {
13631+
eventBus.dispatch('beforeprint');
13632+
};
13633+
_boundEvents.windowAfterPrint = function () {
13634+
eventBus.dispatch('afterprint');
13635+
};
13636+
_boundEvents.windowChange = function (evt) {
13637+
var files = evt.target.files;
13638+
if (!files || files.length === 0) {
13639+
return;
13640+
}
13641+
if (evt.target.id == PDFViewerApplication.appConfig.openFileInputName)
13642+
eventBus.dispatch('fileinputchange', {fileInput: evt.target});
13643+
};
13644+
window.addEventListener('wheel', webViewerWheel);
13645+
window.addEventListener('click', webViewerClick);
13646+
window.addEventListener('keydown', webViewerKeyDown);
13647+
window.addEventListener('resize', _boundEvents.windowResize);
13648+
window.addEventListener('hashchange', _boundEvents.windowHashChange);
13649+
window.addEventListener('beforeprint', _boundEvents.windowBeforePrint);
13650+
window.addEventListener('afterprint', _boundEvents.windowAfterPrint);
13651+
window.addEventListener('change', _boundEvents.windowChange);
13652+
},
13653+
unbindEvents: function unbindEvents() {
13654+
var eventBus = this.eventBus;
13655+
eventBus.off('resize', webViewerResize);
13656+
eventBus.off('hashchange', webViewerHashchange);
13657+
eventBus.off('beforeprint', this.beforePrint.bind(this));
13658+
eventBus.off('afterprint', this.afterPrint.bind(this));
13659+
eventBus.off('pagerendered', webViewerPageRendered);
13660+
eventBus.off('textlayerrendered', webViewerTextLayerRendered);
13661+
eventBus.off('updateviewarea', webViewerUpdateViewarea);
13662+
eventBus.off('pagechanging', webViewerPageChanging);
13663+
eventBus.off('scalechanging', webViewerScaleChanging);
13664+
eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged);
13665+
eventBus.off('pagemode', webViewerPageMode);
13666+
eventBus.off('namedaction', webViewerNamedAction);
13667+
eventBus.off('presentationmodechanged', webViewerPresentationModeChanged);
13668+
eventBus.off('presentationmode', webViewerPresentationMode);
13669+
eventBus.off('openfile', webViewerOpenFile);
13670+
eventBus.off('print', webViewerPrint);
13671+
eventBus.off('download', webViewerDownload);
13672+
eventBus.off('firstpage', webViewerFirstPage);
13673+
eventBus.off('lastpage', webViewerLastPage);
13674+
eventBus.off('nextpage', webViewerNextPage);
13675+
eventBus.off('previouspage', webViewerPreviousPage);
13676+
eventBus.off('zoomin', webViewerZoomIn);
13677+
eventBus.off('zoomout', webViewerZoomOut);
13678+
eventBus.off('pagenumberchanged', webViewerPageNumberChanged);
13679+
eventBus.off('scalechanged', webViewerScaleChanged);
13680+
eventBus.off('rotatecw', webViewerRotateCw);
13681+
eventBus.off('rotateccw', webViewerRotateCcw);
13682+
eventBus.off('documentproperties', webViewerDocumentProperties);
13683+
eventBus.off('find', webViewerFind);
13684+
eventBus.off('findfromurlhash', webViewerFindFromUrlHash);
13685+
eventBus.off('fileinputchange', webViewerFileInputChange);
13686+
},
13687+
unbindWindowEvents: function unbindWindowEvents() {
13688+
var _boundEvents = this._boundEvents;
13689+
13690+
window.removeEventListener('wheel', webViewerWheel);
13691+
window.removeEventListener('click', webViewerClick);
13692+
window.removeEventListener('keydown', webViewerKeyDown);
13693+
window.removeEventListener('resize', _boundEvents.windowResize);
13694+
window.removeEventListener('hashchange', _boundEvents.windowHashChange);
13695+
window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint);
13696+
window.removeEventListener('afterprint', _boundEvents.windowAfterPrint);
13697+
window.removeEventListener('change', _boundEvents.windowChange);
13698+
}
1364613699
};
1364713700
var validateFileURL;
1364813701
var HOSTED_VIEWER_ORIGINS = [

0 commit comments

Comments
 (0)