Форум OperaFan
10-09-2010, 23:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Совет: Не поленитесь войти в профиль форума и заполнить данные о себе, откуда вы, день вашего рождения и прочую полезную информацию. которую вы любите смотреть у других. И укажите свой пол (на всякий случай)! Wink
Страниц: [1] 2 3 4
  Печать  
Автор UserJS-сохранение страниц -- convert2PHF.js
profiT
Administrator

Сообщений: 2 169


Чем проще, тем проще.


Просмотр профиля
03-03-2007, 22:29

"Сохранение страниц" -- это уже в зубах завязло. То такое сохранение, то сякое, то в этот формат, то в другой (в принципе, для меня вообще-то вопрос закрыт).

Тем не менее, в прошлом декабре (нет, не в том прошлом который последний, а ещё раньше на год) мне пришла одна идейка: сделать из Canvas и MIME-типов Оперы сохранение страниц на чистом js (кто не верит -- пусть проверит: "Кто надо -- тот поймёт..."). Тогда, из-за того что CSS-стили ковырять удобно не было технической возможности -- я это дело забросил. Время шло, Opera заполучила DOM 2 Styles.

Я там не спеша слегка подработал скрипт и -- что-то начало получаться. О чём и сообщил на оф. форуме: Convert2PHF.js script. Правда, в очередной раз, не получил вменяемой отдачи, несмотря на то что показал беспрецедентную вещь.

И только совсем недавно я узнал как надо правильно сохранять документы через MIME-типы. Исправил это дело в скрипте -- и он заработал много лучше, даже почти стало можно пользоваться. В итоге, осталась только одна проблема -- иногда сбиваются кодировки.

Как включается:

Нужно подключить этот UserJS: convert2phf.js.
И поставить себе кнопку, которая и будет сохранять: Save to PHF.

После нажатия на кнопку сохранения Опера может впасть в долгую задумчивость конвертируя страницу. По окончании конвертирования появится диалог. Если сохраняете в первый раз, то лучше нажмите на кнопку "Изменить" рядом с типом (т.е. не в нижнем ряду диалога, где "Сохранить", "Открыть"). Там укажите в поле "Расширение" тип "htm", чтобы в дальнейшем сохраняемый этой кнопкой страницы, открывались в Опере. Можно даже указать галку чтобы сохранять страницы вообще в будущем безо всяких диалогов (см. Медитации над настройками. X-Opera), правда название при этом будет только default.htm и его не поменяешь...

Страница сохранится только в одном файле. Он представляет собой единый HTML-файл (иногда -- достаточно большой) в который все картинки и стили внедрены непосредственно. Такие страницы IE открывать не умеет (да и ну его..). Остальные -- могут.

Замечания:

Особенной пользы не вижу (см. выше), но как демонстрация технологий или как возможный плацдарм для улучшений -- почему бы и нет?
« Последнее редактирование: 03-03-2007, 22:30 от profiT » Записан

ELV1S
OperaFan Team

Сообщений: 1 435



Просмотр профиля WWW
04-03-2007, 13:11

Идея интересная. Хотя работает довольно своебразно: в страницу добавляется включенные UserCSS и UserJS. В этом тоже конечно можно найти свои плюсы, но сейчас я вижу больше минусов.
« Последнее редактирование: 21-04-2007, 16:26 от ELV1S » Записан

Не пишите мне личные сообщения. Спрашивайте на форуме.
profiT
Administrator

Сообщений: 2 169


Чем проще, тем проще.


Просмотр профиля
06-03-2007, 13:47

После ковыряния и обновления скрипта чтобы он научился указывать кодировку и исходный адрес внутри сохраняемой страницы появилась парочка вопросов:

Почему Опера корежит шрифты при выдирании стилей?.. Если нажать на кнопку сохранения этим скриптом невооружённым глазом видно что шрифт меняется... И раз надпись в Опере показалась, то отмазки вида: "этот шрифт делает неправильный мёд" не катят, поэтому шрифт правильный и поддерживается Оперой, так почему же он из стилей исчезает?

И ещё: Mikivanch, можешь посмотреть?.. Я вот использовал твою функцию reloadImage() для того чтобы  рисунки заданные через протокол data: не убивались в режиме "только кэшированные" (во второй раз). Всё нормально становится, но вот только IFRAME'ы почему-то остаются в странице (хотя для именно моей задачи это можно повернуть даже и как хорошо). Может у тебя и твой image-reloader.js так мусорит, в DOM-консоли проверял?..

Кстати, по-прозрачности рисунков я тоже слегка маху дал.. Ну и, с анимированными GIF'ами уже ничего не поделаешь, никак ты не выдерешь их содержимое через Canvas..
Записан

369
Любитель

Сообщений: 138


Старый кот - юзер


Просмотр профиля
17-03-2007, 15:36

Приветствую!
Попробовал  convert2phf.js. - понравилось! Мне удобнее, чем .mht, который открывается только в ИЭ.
Но у меня две проблемы:
1. Конфликт с Google-Translation-tooltip.js и  link-alert.js : при наличии в папке userjs этих двух скриптов кнопка Save to PHF не срабатывает - скрипт не запускается. При удалении этих скриптов - работает нормально. Но...
2. Сохраняет файл только с названием default и без расширения (приходится вводить вручную).
(Opera-portable-personal-ru-9.10-v2 Версия 9.10 Сборка 8679 Windows XP)
(Если сохраняете в первый раз, то лучше нажмите на кнопку "Изменить" рядом с типом (т.е. не в нижнем ряду диалога, где "Сохранить", "Открыть"). Там укажите в поле "Расширение" тип "htm", чтобы в дальнейшем сохраняемый этой кнопкой страницы, открывались в Опере. - все это проделал, но настройки не сохраняются...)


Попутно возникает вопрос: можно ли как-то управлять user.js (включать\выключать по одному) через интерфейс, по аналогии с .css, чтобы не лазать в папку и не таскать их туда-сюда? (Искал по форуму, но не нашел...)

Спасибо!
« Последнее редактирование: 17-03-2007, 15:53 от 369 » Записан

У меня файлы ruchki.sys и mozgi.dll кривые и битые!
Fidelich
Ветеран

Версия Opera: распоследняя
Сообщений: 1 427


скоро на Землю


Просмотр профиля
17-03-2007, 18:42

Мне удобнее, чем .mht, который открывается только в ИЭ.
У меня mht прекрасно открывается в Опере...См. вложение


* MHT.png (18.53 Кб, 418x526 - просмотрено 416 раз.)
Записан
369
Любитель

Сообщений: 138


Старый кот - юзер


Просмотр профиля
17-03-2007, 19:41

Мне удобнее, чем .mht, который открывается только в ИЭ.
У меня mht прекрасно открывается в Опере...См. вложение
Спасибо, у меня так и настроено. И "Опера" установлена браузером по умолчанию. А .mht все равно (при щелчке по файлу) открывается в ИЭ...
Записан

У меня файлы ruchki.sys и mozgi.dll кривые и битые!
profiT
Administrator

Сообщений: 2 169


Чем проще, тем проще.


Просмотр профиля
19-03-2007, 16:20

По поводу автоматизированного включения/выключения UserJS: "Управление пользовательскими скриптами" (там несколько вариантов, в том числе и Mikivanch'а-повелителя скриптов).

По поводу галиков с MHT: "Открытие MHT в Opera".

А дальше... Все, так или иначе, станут говорить только в тему этой темы.
« Последнее редактирование: 19-03-2007, 16:23 от profiT » Записан

profiT
Administrator

Сообщений: 2 169


Чем проще, тем проще.


Просмотр профиля
19-03-2007, 16:23

1. Конфликт с Google-Translation-tooltip.js и  link-alert.js : при наличии в папке userjs этих двух скриптов кнопка Save to PHF не срабатывает - скрипт не запускается. При удалении этих скриптов - работает нормально.
Принято, записано.

Цитата: profiT
Если сохраняете в первый раз, то лучше нажмите на кнопку "Изменить" рядом с типом (т.е. не в нижнем ряду диалога, где "Сохранить", "Открыть"). Там укажите в поле "Расширение" тип "htm", чтобы в дальнейшем сохраняемый этой кнопкой страницы, открывались в Опере.
все это проделал, но настройки не сохраняются...)
Угу, видел такое.. Вообще на соплях немного метода. В общем тоже требует дорасследования.
Записан

Lex1
Разработчик

Версия Opera: 8.54 & more
Сообщений: 3 791


Просмотр профиля WWW
21-03-2007, 12:13

Цитировать
Там укажите в поле "Расширение" тип "htm", чтобы в дальнейшем сохраняемый этой кнопкой страницы, открывались в Опере. Можно даже указать галку чтобы сохранять страницы вообще в будущем безо всяких диалогов
У тебя после этого обычное (ctrl+s) сохранение работает? На Opera 9.10 сохраняются файлы нулевого размера.
Дополнено : 20-03-2007, 19:00
"Открыть в другой программе" глючит также.
Кстати, для подобного применения, оно (Открыть в другой программе) вроде бы не хуже. Opera передаёт путь к файлу маленькой проге, которая его переименовывает/перемещает в нужную папку.
Если бы не тормоза с сохранением картинок, было бы пригодно к использованию.
Записан

Sapienti sat
profiT
Administrator

Сообщений: 2 169


Чем проще, тем проще.


Просмотр профиля
06-04-2007, 18:00



Convert2PHF 2.62

По сравнению с чисто моими версиями существенно всё это дело ускорено, облагорожено и таракано-изогнано золотыми руками Mikivanch'а. И получилась уже весьма и весьма преинтересная вещица.

Вот кнопка: Save to PHF.

Ту же кнопку можно взять, если вызовом в адресной строке "opera:javascript:(function(){convert2PHF.showPanel()})()" открыть панель и тянуть иконку самой панели слева-вверху.

Возможности (такого среди других инструментов больше нигде нету, между прочим):
  • Сохранение рисунков только с текущего сервера (галка "From current domain")
  • Сохранение только уже загруженных рисунков (галка "Already loaded")
  • Возможность выбора какие скрипты оставлять в выходном документе: все ("all"), только внедрённые на страницу ("inline"), или вообще убрать все скрипты ("none")
  • Изменения сделанные на странице, сохраняются в выходном документе
  • Реализация только "чистыми" внутри-Оперными средствами (без exe-файлов, без плугинов, без цепляющихся резидентных библиотек, без хуков...)

Недостатки:
  • IE отдыхает, не будучи способным открывать PHF-страницы
  • Относительная медленность по сравнению с другими методами
  • Анимированные GIF'ы отдыхают (или это не недостаток?)
  • PHF распухает довольно сильно (из-за неэффективного текстового кодирования в base64)

Вследствие того что изменения идут в выходной документ получается то что кнопки подобные Kill (конкретно, вот эта кнопка: Почикать страницу) приобретают смысл.

Есть также MyPage -- это уже целое комплексное решение для редактирования со своими кнопками и прочим. То есть: можно вручную порезать что не нравится на странице и сохранить.

Кто-нибудь зацените это дело в Линуксе: неужели и там заработает?.. У нас у обоих его нету под рукой.
« Последнее редактирование: 06-04-2007, 18:03 от profiT » Записан

Lex1
Разработчик

Версия Opera: 8.54 & more
Сообщений: 3 791


Просмотр профиля WWW
06-04-2007, 20:57

Галочка "Сохранить без рисунков" была бы небесполезной. Равно как и кнопка "Сохранять без запросов"

P.S.Вышеописанный баг можно обойти используя iframe.
Дополнено : 06-04-2007, 19:10
Цитировать
Недостатки:
Основной недостаток (после скорости), это отсутствие нормального имени у файла Smiley
Сделал простенькую прогу (10kb) берущую имя из <TITLE> и копирующую файл в папку "Мои документы\Web" с автопереименованием если такой файл уже существует.
Укажите в MIME-типе "Открыть в другой программе" (галочка не нужна) phf.exe.
Записан

Sapienti sat
profiT
Administrator

Сообщений: 2 169


Чем проще, тем проще.


Просмотр профиля
06-04-2007, 21:04

Имя же можно вводить, если сохранять с запросом. На то и расчитано изначально.
Записан

Lex1
Разработчик

Версия Opera: 8.54 & more
Сообщений: 3 791


Просмотр профиля WWW
06-04-2007, 21:26

Цитировать
Имя же можно вводить
Можно. Но делать это каждый раз неудобно.
Пересохранение локальных страниц не работает?
Цитировать
JavaScript - file://localhost/C:/My/save_phf.html
Javascript URL thread: "javascript:(function(){opera.convert2PHF()})()"
Error:
name: ReferenceError
message: Security error: attempted to read protected variable
Записан

Sapienti sat
Mikivanch
Moderator

Версия Opera: 10.10 1893
Сообщений: 740



Просмотр профиля
07-04-2007, 01:34

Lex1
Цитировать
Пересохранение локальных страниц не работает?
Должно работать.  Для какой-страницы не работает? Иногда вылезает ошибка безопасности, связанная с конвертированием картинок.

Еще хочу заметить:
1) Jpeg картинки  конвертируются в png.
2) Фоновые картинки сохраняются только с текущего домена.
3) Если отображаются только кэшированные картинки, скрипт сначала подгружает картинки, которые будут конвертированы. Затем загружает в кэш конвертированные картинки.

Скорость при сохранении только локальных картинок вполне приемлемая (если картинки уже загружены в кэш). Сохранение картинок с других доменов пока сделано неоптимально. Будем переделывать.

Вопрос к тем, кто использует скрипт. Какие опции еще нужны? Следует ли очищать страницу от элементов, созданных пользовательскими скриптами?
« Последнее редактирование: 07-04-2007, 01:39 от Mikivanch » Записан
369
Любитель

Сообщений: 138


Старый кот - юзер


Просмотр профиля
07-04-2007, 10:54

Спасибо за работу над скриптом.
К сожалению, у меня новый скрипт не работает Sad
После установки скрипта и кнопки кнопка вызывала первый диалог с настройками сохранения (http://www.puzzleclub.ru/files/convert2phf_2.62.png), но при нажатии на "ОК" или "Cancel" ничего не происходило, диалог оставался висеть. После перезагрузки"Опера" - то же самое, только диалог исчезает после нажатия кнопок, но ничего более не происходит...
Opera Portable
Версия 9.10 Сборка 8679 Платформа Win32 Система Windows XP
(Предыдущая версия convert2PHF.js, как я выше писал, на этой же сборке хоть как-то работала...)
Все имеющиеся user.js выключены.
Записан

У меня файлы ruchki.sys и mozgi.dll кривые и битые!
Страниц: [1] 2 3 4
  Печать  
 
Перейти в:  

OperaFan © 2006-2010, OperaFan Team
Powered by SMF | SMF © 2006, Simple Machines LLC | Sitemap