#javascript #firefox_extension
Пишу приложение, которое заходит на сайт, ловит там обновления и парсит их. Приложение срабатывает само при запуске браузера, переходит на сайт и начинает с ним работать. Пока сайт работает - приложение тоже работает. Сайт иногда глючит или слетает. Сел писать функцию перезахода на сайт перезапуска работающего кода при краше сайта, оказалось что это будет муторно.. пришла идея вместо этого перезапускать браузер. читал про разные API на сайте мозиллы, нашёл sdk/windows, но при открытии нового окна через этот API не срабатывает код из main.js. как можно рестартнуть браузер чтобы main.js выполнился? привожу часть кода, нужно как-то подправить функцию ReConnect, возможно использовать другой API.. var data = require("sdk/self").data; var tabs = require("sdk/tabs"); var windows = require("sdk/windows").browserWindows; tabs[0].url = 'https://awesomesite.com/login'; tabs[0].on('ready', function(tab) { firstTab = tab.attach({ contentScriptFile: [ data.url("jquery.min.js"), data.url("firstTabScript.js") ] }); firstTab.port.on("showSolution", function (message) { //console.log(message); forecast_panel.port.emit("showSolution", message); }); firstTab.port.on("ReConnect", function() { ReConnect() }); firstTab.port.on("currentPageNumber", function (i) { forecast_panel.port.emit("currentPageNumber", i); }); }); function ReConnect (tab_number) { windows.open(""); windows[0].close(); }
Ответы
Ответ 1
Работа с конкретным сайтом осуществляется при помощи page-mod и page-worker. Модуль page-mod срабатывает при заходе пользователем на сайт, а page-worker, выполняется независимо и может работать в фоновом режиме (пользователь его не увидит). Полагаю, что Вам нужен второй вариант, который прикрепит и будет выполнять Ваш скрипт: const { Page: pageWorker } = require('sdk/page-worker'); var worker = pageWorker({ contentURL: 'https://google.com', /* Подгружаем файл скрипта из папки 'data' */ // contentScriptFile: './MyScript.js', /* Для рабочего примера, простой скрип в строке: */ contentScript: 'self.port.emit(\'hello\', document.body.innerHTML);', contentScriptWhen: 'end' }); // Вызов из нашего скрипта worker.port.on('hello', function(data) { console.log('Reived data:', data); }); Когда скрипт выполнится, Вы можете производить на нём (с указанного сайта) любые действия, в том числе и производить проверку на наличия обновлений при помощи setInterval и XMLHttpRequest, и нет нужны перезагружать страницу и вообще заходить на неё.Ответ 2
$(document).ready(function() { document.write("ready!"); }); document.location.reload(true);
Комментариев нет:
Отправить комментарий