console.log("contentscript.js started!"); function extractUrlsAndFilenames() { console.log("contentscript.js: this is extractFileUrlsAndNames()"); // get the correct frame let frame = document.querySelector("iframe.js-mail-content"); // get all divs containing attachments let divs = frame.contentWindow.document.body.querySelectorAll( "div.samoware-mail-message__attach__item[attachment-ref]" ); // loop over divs and extract attachment information let urlsAndFilenames = []; divs.forEach((div) => { let url = div.getAttribute("attachment-ref"); let filename = div.getAttribute("file-name"); // if filename is null, derive it from url if (!filename) { let splitUrl = url.split("/"); filename = splitUrl[splitUrl.length - 1]; } urlsAndFilenames.push({ url: url, filename: filename }); }); return urlsAndFilenames; } function clickPrintButton() { let printElement = document.querySelector( 'li[ng-click="printMessage(selectedMessage)"]' ); printElement.click(); } const urlsAndFilenames = extractUrlsAndFilenames(); console.log( `contentscript.js: URLs and filenames extracted -> ${JSON.stringify( urlsAndFilenames )}` ); clickPrintButton(); console.log(`contentscript.js: clicked the print button`); // this last statement is important – it's evaluation value is the return value for the background script urlsAndFilenames;