Скачивание файлов в js

92
26 мая 2021, 23:00

Подскажите как написать скрипт для Tampermonkey, чтобы он при открытии новой вкладки в Firefox (например какой-либо картинки на сайте https://wallpaperscraft.ru) скачивал по ссылке с атрибутом href (например картинку в оригинальном разрешении) а потом закрывал эту вкладку. Этот скрипт не работает.

     var link = document.createElement('a');
    link.href = sUrl;
    if (link.download !== undefined){
        //Set HTML5 download attribute. This will prevent file from opening if supported.
        var fileName = sUrl.substring(sUrl.lastIndexOf('/') + 1, sUrl.length);
        link.download = fileName;
    }
    //Dispatching click event.
    if (document.createEvent) {
        var e = document.createEvent('MouseEvents');
        e.initEvent('click' ,true ,true);
        link.dispatchEvent(e);
        return true;
    }
Answer 1
// Find link
var allLinks = document.querySelectorAll('a'), sUrl;
for(let i=0;i<allLinks.length;i++) {
    if(~allLinks[i].href.indexOf('.png')||~allLinks[i].href.indexOf('.jpg')) {
        // if it is image link, set sUrl
        sUrl = allLinks[i].href
    }
}
if(!sUrl) alert('Ссылка не найдена');
// Create another link
var link = document.createElement('a')
// Set href attribute
link.setAttribute('href',sUrl)
// Set html5 download attribute
link.setAttribute('download',sUrl.substring(sUrl.lastIndexOf('/')+1,sUrl.length))
// Start download
link.click()
// Exit page
window.close()
// Проверено на Opera 62 - просто открывается ссылка, не понял причины. В Chrome 67 всё загружается
// Только там я в консоли увидел опечатку с window, но забыл исправить
READ ALSO
Не попадаю в блок else if [закрыт]

Не попадаю в блок else if [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

115
Как узнать в какую сторону отсортируется массив функцией sort(fn)

Как узнать в какую сторону отсортируется массив функцией sort(fn)

Есть функция sort(fn)Как не проверяя результат, узнать в какую сторону сортируется массив (увеличение или уменьшение)?

143
Jquery UI draggable stop: поймать элемент который находится под тем,который перетягивают

Jquery UI draggable stop: поймать элемент который находится под тем,который перетягивают

Собственно говоря, вопрос в заголовкеЧто я хочу сделать, но не знаю как: при срабатывании event stop получить элемент, над которым отпустили блок,...

112
Как произвольно разбить &lt;ul&gt; на columns?

Как произвольно разбить <ul> на columns?

Всем привет! Обычным способом можно разбить "ul" на columns, прописав в стилях списка "columns: 3"Он сделает 3 колонки, по 2 "li" в каждой

118