Pacho
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору TheBarmaley Цитата: а откуда ты узнаешь, что скрипт не сработал? случай "на глаз" не рассматриваем, бо это несерьёзный подход..)) | Как раз "на глаз" - это сразу видно. Цитата: документ.ончендж() или его вариации |
Цитата: дом-контент-лоадед и реди-стейт-чендж перекрывают это построение.. | Альтернатива этому всему параметр "run_at": "document_end" в manifest.json Но в моём случае кнопка оказалась необходима, да и проще так )) Цитата: я же сказал: один из атрибутов окна-таргета - ... любой "отфонарный".. | Сам принцип-то понятен. Но как на практике передать атрибут окну из background и где его найти в content не понял (( Сделал проще: background.js Код: chrome.pageAction.onClicked.addListener(function(tab) { var tabId = tab.id; chrome.tabs.executeScript(tabId, {code: 'var delay = 0;'}, function() { chrome.tabs.executeScript(tabId, {file: 'content.js'}) }); }) | В content, соответственно, проверяю переменную delay. Если есть, значит скрипт запущен вручную. TheBarmaley VVL99 В manifest.json указал: Код: "content_scripts": [ { "matches": ["http://*/*", "https://*/*", "file:///*"], "js": ["content.js"], "run_at": "document_end" } ], "permissions": ["http://*/*", "https://*/*", "file:///*"], | В Opera этот код Код: var oXHR = new XMLHttpRequest(); oXHR.onreadystatechange = function() { if (oXHR.readyState === 4 && (oXHR.status === 200 || oXHR.status === 0)) { console.log('readyState: ' + oXHR.readyState + '; status: ' + oXHR.status + '\nresponse: ' + oXHR.responseText); } } oXHR.onerror = function() { console.log("error") } oXHR.open("GET", "file:///R:/file.txt", true); oXHR.send() | в background читает нормально файл, а в content показывает пустую строку. Ошибки никакой не выдаёт. Но это пол-беды. А беда в том, что я не нашёл способа записывать в файл из расширения. Вроде, есть возможность писать в Local Storage, но это не мой случай )) Пришлось писать TCP-сервер, принимающий и отдающий данные по запросу, который будет сохранять все данные в файле. Для получения данных есть такая функция: Код: function GetParameter(sParam) { var oXHR = new XMLHttpRequest(); oXHR.open('GET', 'http://127.0.0.1/' + sParam, false); oXHR.send(); if (oXHR.readyState === 4) { console.log('readyState: ' + oXHR.readyState + '; status: ' + oXHR.status); if (oXHR.status === 200) return JSON.parse(oXHR.responseText) } } | Использование: Код: var Param = GetParameter('ParamName') | Но запрос синхронный. Как сделать, чтобы работало с асинхронным запросом? | Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 11:43 12-01-2019 | Исправлено: Pacho, 13:50 13-01-2019 |
|