#javascript #file #dom #google-chrome-extension #firefox-addon
#javascript #файл #dom #google-chrome-расширение #firefox-дополнение
Вопрос:
У меня очень сложный сайт, и самый простой способ получить от него то, что я хочу, — это просто регистрировать добавления узлов DOM. В течение длительного периода времени. Мой текущий код:
var observer = new MutationObserver(function(mutationList) {
for (var mutation of mutationList) {
for (var child of mutation.addedNodes) {
appendtofile(path,childasstringorsomething);
}
}
});
observer.observe(document, {childList: true, subtree: true});
Ну, невозможно «appendtofile» с помощью javascript. Похоже, что расширения (по крайней мере, в Firefox / chromium) также сильно ограничены размером файла и изолированы от некоторых худших вариантов решения для хранения, если таковые вообще существуют. Мой текущий метод заключается в отправке на локальный порт и прослушивании с ncat -k -l 1234 >> test.txt
, однако это довольно неоптимально.
Какой самый простой или чистый способ сделать это?
Комментарии:
1. О каком размере вы говорите? Вы смотрели на IndexedDB? Достаточно ли локального хранения для вашего приложения или его нужно хранить удаленно?
2. Это должно легко составлять пару ГБ текста в день в течение длительного времени. Я надеялся иметь что-то вроде ежедневных текстовых файлов и правильно их архивировать оттуда. IndexedDB выглядит точно так, как мне нужно, однако браузеры, похоже, по-прежнему имеют ограничения по размеру и очень уродливую / неприемлемую принудительную функцию автоматического удаления. Я не смог найти ничего, чтобы сделать это более стабильным, например, делать ежедневные резервные копии / очистки / экспорт.
3. Обязательно ли это должно основываться на браузере? Знакомы с приложениями Electron? По сути, сервер узлов и браузер Chrome объединены в настольное приложение. Из-за того, что сервер узла имеет больше доступа к файлам / БД, чем браузер.
4. Расширения могут использовать nativeMessaging для связи с утилитой, которая выполняется как собственный процесс ОС. Очевидно, что эта утилита сможет записывать файлы любым удобным для нее способом. Существуют хосты nativeMessaging, которые даже запускают node.js , посмотрите примеры.
5. @charlietfl Я не знаю никакого electron, но мне нравится идея. Итак, я попытался, загрузив сайт с помощью
view.webContents.loadURL
и прикрепив наблюдателя с помощьюview.webContents.executeJavaScript
. Это работает, однако наблюдатель снова застрял в изолированной среде, и я не уверен, как действовать дальше.