Автор Тема: Поддержка формата MHT  (Прочитано 1569 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Поддержка формата MHT
« : 06 Декабря 2015, 21:56:40 »
Вариант на тему поддержки формата MHT. Содержимое скопировать в "корень" программы.
Для K-MELEON v.75+: https://yadi.sk/d/f5Jhcr2Am2pEs .

( + ) исправлена проблема при открытии файлов MHT по ассоциации (т.е. не через файл / открыть).

Возможны странности при замусоренном профиле. Очистите лишние файлы из своего профиля.
Все будет работать. Делайте резервные копии, проверяйте на "чистых" дистрибутивах.
Лучше все тестировать в виртуальных машинах.

Совместно рекомендовано использование http://forum.geckoworld.ru/index.php/topic,239494.0.html ,
т.к. иначе придется всегда выбирать фильтр (*.*). Рекомендуется подменить пункт меню / хоткей.
« Последнее редактирование: 06 Декабря 2015, 22:53:43 от hermes »

Оффлайн rodocop

  • Глобальный модератор
  • Сообщений: 852
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #1 : 06 Декабря 2015, 22:47:56 »
Насчет мусора в профиле.

Есть общая рекомендация: при любых изменениях конфигурации КМ в части расширения и т.п. перед запуском КМ очищать папку startupCache в папке профиля.

Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #2 : 06 Декабря 2015, 23:06:47 »
Про пакет MHT: пришлось сильно упростить и добавить pref("kmeleon.install_firefox_extension", true).
Дело в том, что без патченья EXE'шника не смог добиться отсутствия отторжения у "оригинальных"
дистрибутивов. У меня в сборке pref("kmeleon.install_firefox_extension", false) или отсутствие этой
настройки никак не влияет на работоспособность. Ладно, будем ваять дальше.
« Последнее редактирование: 06 Декабря 2015, 23:16:02 от hermes »

Оффлайн rodocop

  • Глобальный модератор
  • Сообщений: 852
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #3 : 06 Декабря 2015, 23:11:48 »
Мне кажется, тут вообще косяк Дориана где-то: по идее, эта префка должна определять только разрешение на инсталляцию фоксовых расширений, но в КМ она почему-то требуется и для их дальнейшей работы... Как только ее удаляешь или фолсишь - расширения ФФ перестают работать.

Кстати, сейчас проверил: именно удаление startupCache позволяет новому расширению начать работать.

Оффлайн rodocop

  • Глобальный модератор
  • Сообщений: 852
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #4 : 06 Декабря 2015, 23:24:49 »
Кстати, смежный вопрос: насколько реально воспроизводить в КМ интеграцию XUL-расширений в интерфейс пользователя бинарными средствами? Вот на примере того же UnMHT...

Т.е. я знаю, что в принципе это реально: в старом КМ так был интегрирован AdBlock - просто Палантом (автором Адблока) была написана dll-ка, которая собственно и заменяла собой XUL-овые оверлеи - и у КМ появлялась не только кнопка на Панели инструментов, но и кнопка в статусбаре.

Интересно, насколько сложно сделать что-то такое для других популярных расширений ФФ типа UnMHT, DownThemAll, NoScript и т.п.

Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #5 : 06 Декабря 2015, 23:46:12 »
Нет ничего невозможного, мешает явный дефицит информации, не говоря о SDK.
Насчет остального, пока пытаюсь, с переменным успехом, своять что-то вроде
NoScript. В старой Opera'e это делалось скриптом... будем думать, пробовать.
...
Пока полноценно не работает не одно расширение фокса: для справедливости,
надо отметить что тут использовано два расширения UnMHT и Mozilla Archive Format.
Если убрать Mozilla Archive Format - перестанет открывать по ассоциации, а убрать
UnMHT - пропадет поддержка при открытии как класс. Сам по себе UnMHT работает
только при полностью загруженном браузере, но покажет белый экран при открытии
по ассоциации. Удачно было замечено, что Mozilla Archive Format заставляет
модуль расширений загружаться паралельно с браузером, а не после.

Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #6 : 07 Декабря 2015, 00:00:19 »
Цитировать
Кстати, сейчас проверил: именно удаление startupCache позволяет новому расширению начать работать.

С этим startupCache - вообще: темная история. В 76+ мне пришлось химичить
"специальный" вариант startupCache. Иначе намертво не работали настройки в
about:config. Допускаю... что из-за экспериментов с патчиньем оригинального файла.

Оффлайн rodocop

  • Глобальный модератор
  • Сообщений: 852
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #7 : 07 Декабря 2015, 01:32:06 »
Насчет SDK - вот здесь есть кой-какие базовые доки по написанию k-плагинов:
KpluginSpecs
Kplugin Example
KPluginsAndGcc

Возможно, это поможет. (правда, все на английском)


Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #8 : 15 Июля 2018, 03:06:00 »
Поскольку информация местами расползалась по другим темам, приведу ссылку на
место в обсуждении где было предложено видео для самостоятельной модификации
необходимых файлов: http://forum.geckoworld.ru/index.php/topic,241532.msg247251.html#msg247251

Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #9 : 15 Июля 2018, 03:56:06 »
Повторю еще раз, открыть файл MHT в загруженном браузере по ссылке или через
"файл \ открыть" и по ассоциации файла, когда он не запущен вообще, это разные вещи.
Тут еще нужно учитывать положение xpinstall.enabled и kmeleon.install_firefox_extension,
а также время инициализации расширения относительно начальной загрузки браузера.
Немного выше было описано почему нужно два расширения, а не одно (хотя вроде "хватает"
и одного) http://forum.geckoworld.ru/index.php/topic,239502.msg242905.html#msg242905

Например, у меня для большей безопасности (дабы было невозможно установить расширение
фоново) обе pref'ы стоят в false, но расширения продолжают работать если сделать некоторые
модификации. В большинстве случаев, переключение этих настроек может отключить
расширения или даже замусорить профиль (так что их переустановка не поможет).

Теперь, поскольку возникало много вопросов про файлы MHT, выкладываю обновленный набор
специально для Goanna.

MHT support v. 2.0
(прямая ссылка) https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/2CL1pA-A3ZBJze (~475 KB)

Видео демонстрация   (640x480 ~1 мин.)
(прямая ссылка) https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/W-RrTMlb3ZBK2r (~278 KB)

alpha
Видео демонстрация  (файлы не входят в набор, вариант идеи пересохранения в MHT )
(прямая ссылка) https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/8RO4t_Cf3ZBK33 (~367 KB)

« Последнее редактирование: 15 Июля 2018, 04:03:31 от hermes »

Оффлайн franzisk

  • Участник форума
  • Сообщений: 2
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #10 : 19 Июля 2018, 19:08:52 »
Спасибо! А сохранять в MHT сразу страницу никак нельзя?  :-[

Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #11 : 19 Июля 2018, 23:17:03 »
Можно, и даже не теоретически, осталось понять: как сложить два процесса вместе :  )
И главное... нужно ли это делать! На видео про alpha'у, можно увидеть как нужный диалог
вызывается и работает. Проблема в том, что приходится (параллельно) копать вызовы FF
для этого.
...
В FF это работает так: браузер сохраняет в временную папку страницу, расширение
пересохраняет в MHT и копирует в папку указанную пользователем. На текущий момент,
вывел себе в KM кнопку, которая сохраняет (в одно нажатие) и как TxT, и как HTML с рисунками
в заранее известную папку. В конце работы, одно нажатие и папка пересохранена в набор MHT.

Честно говоря, мне так даже больше нравится. Почему? Если что-то пошло не так, всегда есть
обычная HTML версия. При этом, есть страницы (обычно, это конференции ixbt) которые просто
нельзя сохранить в HTML корректно. Тот же ixbt сохранит пустые страницы и без сети их не
прочесть. Тут и спасает TxT вариант. Т.е. можно спокойно насохранять и читать позже. Так или
иначе, информация будет в читабельном варианте. А просто слепо сохранять в MHT и удалять
все прочее не разумно, как мне кажется.

Да, важный нюанс! Заметил, для молниеносной работы лучше внести изменения в эти две
настройки (вручную, через about:config или в файлы настроек профиля).

user_pref("extensions.unmht.open.offline", true);
user_pref("extensions.unmht.open.ppt.skip_warning", true);

Фокус в том, что настройки будут некорректно подхвачены из глобальных, потому в комплекте
нет файла JS в BROWSER \ DEFAULTs \ preferences (как было сделано для ABPrime).

При их внесении, файлы MHT будут открываться в автономном режиме по умолчанию.
Т.е. внешние ссылки не будут грузить всякие счетчики и т.д. На работу обычных вкладок это не
влияет никак. Получается быстрее :  ) По сути, браузер будет работать в двух режимах параллельно.


Оффлайн hermes

  • Разработчик
  • *
  • Сообщений: 185
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #12 : 19 Июля 2018, 23:56:20 »
@ franzisk
Рекомендую для удобства использования (в том числе в контексте MHT):
http://forum.geckoworld.ru/index.php/topic,239494.msg242867.html#msg242867

У себя давно заменил стандартный диалог, в том числе в меню и по [ CTRL ] + [ O], на этот :)
Он много удобнее. Надо будет сделать версию с памятью на открываемый формат (немного позже).

Оффлайн franzisk

  • Участник форума
  • Сообщений: 2
    • Просмотр профиля
Re: Поддержка формата MHT
« Ответ #13 : 20 Июля 2018, 00:20:04 »
@ franzisk
Рекомендую для удобства использования (в том числе в контексте MHT):
http://forum.geckoworld.ru/index.php/topic,239494.msg242867.html#msg242867

У себя давно заменил стандартный диалог, в том числе в меню и по [ CTRL ] + [ O], на этот :)
Он много удобнее. Надо будет сделать версию с памятью на открываемый формат (немного позже).
Спасибо! Буду менять устоявшееся отношение к сохранению .mht