diff --git a/src/_h5ai/public/js/lib/ext/preview/preview-aud.js b/src/_h5ai/public/js/lib/ext/preview/preview-aud.js index 3bf6e6d9..904d265d 100644 --- a/src/_h5ai/public/js/lib/ext/preview/preview-aud.js +++ b/src/_h5ai/public/js/lib/ext/preview/preview-aud.js @@ -22,16 +22,23 @@ const updateGui = () => { ]); }; +const addUnloadFn = el => { + el.unload = () => { + el.src = ''; + el.load(); + }; +}; + const load = item => { return new Promise(resolve => { const $el = dom(tpl) .on('loadedmetadata', () => resolve($el)) - .attr('controls', 'controls') - .attr('src', item.absHref); - + .attr('controls', 'controls'); if (settings.autoplay) { $el.attr('autoplay', 'autoplay'); } + addUnloadFn($el[0]); + $el.attr('src', item.absHref); }); }; diff --git a/src/_h5ai/public/js/lib/ext/preview/preview-vid.js b/src/_h5ai/public/js/lib/ext/preview/preview-vid.js index 3eb63ec2..04e21a03 100644 --- a/src/_h5ai/public/js/lib/ext/preview/preview-vid.js +++ b/src/_h5ai/public/js/lib/ext/preview/preview-vid.js @@ -26,16 +26,23 @@ const updateGui = () => { ]); }; +const addUnloadFn = el => { + el.unload = () => { + el.src = ''; + el.load(); + }; +}; + const load = item => { return new Promise(resolve => { const $el = dom(tpl) .on('loadedmetadata', () => resolve($el)) - .attr('controls', 'controls') - .attr('src', item.absHref); - + .attr('controls', 'controls'); if (settings.autoplay) { $el.attr('autoplay', 'autoplay'); } + addUnloadFn($el[0]); + $el.attr('src', item.absHref); }); }; diff --git a/src/_h5ai/public/js/lib/ext/preview/preview.js b/src/_h5ai/public/js/lib/ext/preview/preview.js index 665caa20..703b2b99 100644 --- a/src/_h5ai/public/js/lib/ext/preview/preview.js +++ b/src/_h5ai/public/js/lib/ext/preview/preview.js @@ -207,6 +207,11 @@ Session.prototype = { const item = this.item; Promise.resolve() .then(() => { + each(dom('#pv-container *'), el => { + if (typeof el.unload === 'function') { + el.unload(); + } + }); dom('#pv-container').hide().clr(); showSpinner(true, item.thumbSquare || item.icon, 200); })