Добавление событий DOM в локальный файл

#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 . Это работает, однако наблюдатель снова застрял в изолированной среде, и я не уверен, как действовать дальше.