I am trying to open an epub file in my chrome extension page (‘dist/epub-viewer.html’) but chrome keeps trying to download the epub instead. I am using manifest v3.
function isEpubUrl(url) {
return url.toLowerCase().endsWith('.epub');
}
function isEpubViewerUrl(url) {
const viewerUrl = chrome.runtime.getURL('dist/epub-viewer.html');
return url.startsWith(viewerUrl);
}
function openEpubInViewer(tabId, epubUrl) {
const viewerUrl = chrome.runtime.getURL('dist/epub-viewer.html') + '?file=' + encodeURIComponent(epubUrl);
chrome.tabs.update(tabId, { url: viewerUrl });
}
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.url && isEpubUrl(changeInfo.url) && !isEpubViewerUrl(tab.url)) {
openEpubInViewer(tabId, changeInfo.url);
}
});
Is there any way to do this without having to create an additional page where the user can open their EPUB? I have similar code for PDFs which works fine, but for EPUBs chrome keeps trying to download them.