Что нового

[Сеть, интернет] Просмотр ВЭБ-страниц в GUI-окне

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Столкнулся с такой проблемой.
Код:
#include <GUIConstants.au3>
#include <IE.au3>

GUICreate("IE object embedded", 500, 500)
$oIE = _IECreateEmbedded() 
GUICtrlCreateObj($oIE,10,140,480,350) 

GUISetState (@SW_SHOW)
_IENavigate($oIE,"1.htm") 

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd

Открывание с помощью ф-ий IE
html-файла ,находящегося на диске. (не из сети)
при включенном Интернете выполняется долго .
Как с помощью AutoIt установить режим автономной работы.?
А может вообще есть другое более корректное решение?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Код:
_IENavigate($oIE, @ScriptDir & "\1.htm")
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Garrett [?]
Это я просто в примере указал так.
Все равно некоторые файлы открываются очень долго при включенном Инете .
Если вручную установить автономный режим-то почти мгновенно.

Файл-представляет собой сохраненную ВЭБ-страницу в формате htm
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [Сеть, интернет] Как установить в IE режим автономной работы

gregaz [?]
Файл-представляет собой сохраненную ВЭБ-страницу в формате htm
В этом случае, всё ссылки на ресурсы веб страницы, будут подтягиваться из Интернета, следовательно отсюда и время. При включение автономной работы, IE отключает загрузку из интернета и грузит страницу из cash.
Если вы очистите историю, удалите всё файлы cookies и загрузите IE с пустой страницы, то при включённом автономном режиме, вы не сможете посмотреть ни одну страницу (картинка прилагается :smile:).


Поэтому, вам нужно будет:
1. или изменить все ссылки (img, css, javascript) в коде страницы, на локальные. То есть, с вида httр://ya.ru/img/1.gif на С:\куда_сохранили_страницу\img\1.gif
2. или включить через реестр автономный режим (честно, не помню ветку, но если очень нужно, найду :smile:) Но это при условии что страница присутствует в cash IE.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Garrett [?]
Поэтому, вам нужно будет:
1. или изменить все ссылки (img, css, javascript) в коде страницы, на локальные. То есть, с вида httр://ya.ru/img/1.gif на С:\куда_сохранили_страницу\img\1.gif
2. или включить через реестр автономный режим (честно, не помню ветку, но если очень нужно, найду
) Но это при условии что страница присутствует в cash IE.
Спасибо за разъяснения.
Я так и предполагал,что ссылки пытаются загрузиться.
Кстати некоторые страницы и в автономном режиме виснут.

У меня не стоит задача просмотра любых страниц.
Нужно иметь возможность просмотра десятка , заранее подготовленных страниц.

Может имеет смысл попробовать очистить страницы от ссылок ?(Заменить на их текстовое содержание)
С помощью регулярных выражений я думаю можно попробовать.
Что посоветуете ?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [Сеть, интернет] Как установить в IE режим автономной работы

gregaz [?]
Что посоветуете ?
IMHO я бы заменил пути на локальные.
[box]<script src="httр://ya.ru/themes/theme.js?rc1" type="text/javascript" language="JavaScript"></script>
<script src="c:\папка сохранения\themes\theme.js?rc1" type="text/javascript" language="JavaScript"></script>

<img alt="" src="httр://ya.ru/themes/images/logo.gif" id="smflogo" class="floatleft">
<img alt="" src="c:\папка сохранения\themes\images\logo.gif" id="smflogo" class="floatleft">

<link href="httр://ya.ru/themes/default/css/ff.css" type="text/css" rel="stylesheet">
<link href="c:\папка сохранения\themes\default\css\ff.css" type="text/css" rel="stylesheet">[/box]
Ссылки тега <a> (кроме внутренних ссылающихся на страницы - меню) можно не трогать.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Можно, наверное, сохранить страницу из IE, как <Веб-страница, полностью(*.htm;*.html)> и посмотреть, что при этом сохраняется на диск в сопутствующую папку и как меняются ссылки в самой странице.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Если стрницу открывать не обязательно. То можно считать html файл, выбрать из него необходимо и дальше уже по желаниею, например созадть новую свою страницу html и открыть в браузере.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Garrett [?]
<link href="c:\папка сохранения\themes\default\css\ff.css" type="text/css" rel="stylesheet">
Идея понятна, но реализация :- нет
Имеется ведь только ВЭБ-файл.(не папка с ресурсами сайта)
Кроме того встречаются и другие теги отсылающие на сеть.
Да и проверить не удается пока все помехи не отключишь.

madmasles [?]
Можно, наверное, сохранить страницу из IE, как <Веб-страница, полностью(*.htm;*.html)> и посмотреть...
Можно, но уж больно кропотливо да и надо хорошо знать HTML.

Решил пойти методом от обратного.
Убираю все помехи (грубо- с потерями)
Удаляю. все строки содержащие "src=","http:","href="
Получаю нормально загружающуюся страницу, но с потерями нужной информации.
Затем постепенно восстанавливать нужную инфу.

`p r o x y [?]
Если стрницу открывать не обязательно. То можно считать html файл, выбрать из него необходимо и дальше уже по желаниею
Попробую. Если терпения хватит. А то может и овчинка-выделки не стоит.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [Сеть, интернет] Как установить в IE режим автономной работы

gregaz давайте по порядку :smile:

Откуда у вас появляется нужная вам страница?
Вы сохраняете её на диск? Если да то в той папке, куда вы её сохранили, сохраняются и все ресурсы, на которые ссылаются img, link, script,.

Если вы просто скопировали код HTML в режиме просмотра кода, и вставили в текстовый файл (с последующим сохранением в .html), тогда вам придётся самим скачивать все ресурсы по ссылкам на локальный диск, в папку с вашей страницей, для последующий работы с ними.

Если есть возможность, опишите вашу задачу подробнее.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Garrett [?]
Если есть возможность, опишите вашу задачу подробнее.
Задача в том, чтобы иметь возможность быстрого просмотра содержимого нескольких сохраненных на локальный диск HTML- страниц. C возможностью их количественного пополнения.
Цель: Использование в качестве справочной информации в окне GUI, с возможностью обновления при необходимости.

Сохранение выполняю в виде : ВЭБ страница ( только HTML ).
Т.е. без папки с ресурсами. Внешний вид страницы , конечно меняется, но это не столь важно.
Важна информационная часть
Дополняя страницу фоном получаю вполне приемлемый внешний вид.

Столкнулся с несколькими проблемами :
1. При подключенном Интернете выполняется попытка найти отсутствующие ресурсы в Интернете.Скрипт виснет.
2. В некоторых страницах меняется кодировка страницы.

Вроде бы с помощью :
Код:
$sPattern = '(["http:|href="|src="])//.+?(")'
$sText_HTML = StringRegExpReplace ( $sText_HTML ,$sPattern,'\1\2' )


удается иногда устранить , но не всегда . Что-то еще мешает.

В идеале хотелось бы иметь :
1.Загрузку из сохраненного файла независимо от наличия Инета.
2.(При наличии соединения ) При клике линка на странице -загрузка из Инета ресурса, соответствующего линку .
3.(При отсутствии соединения ) При клике линка на странице - игнорирование клика (отсутствие зависания скрипта.)
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [Сеть, интернет] Как установить в IE режим автономной работы

gregaz
Вот маленький отчёт по вашему вопросу.
Побывал разные варианты, и пришёл к выводу.
В идеале хотелось бы иметь :
1.Загрузку из сохраненного файла независимо от наличия Инета
1. вариант сохранять страницу полностью
Проблемы:
Придётся использовать IE, в Shell.Explorer.2 не будут обрабатывать JS, что может привести к проблемам.

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

Ещё, (как вариант) можно, выдёргивать из документа нужную информацию, складывать её в базу, считывать при необходимости, и выводить в GUI любым удобным способом.
2.(При наличии соединения ) При клике линка на странице -загрузка из Инета ресурса, соответствующего линку .
Здесь однозначно запуск стороннего браузера. Это связано с тем, что современные веб-технологии не будут корректно работать в Shell.Explorer.2
3.(При отсутствии соединения ) При клике линка на странице - игнорирование клика (отсутствие зависания скрипта.)
Здесь просто нужно обрабатывать событие. В зависимости от варианта вызова, использовать или JS или Autoit стандартные функции, и в случае отсутствия соединения с Интернетом вызывать перенаправление на функцию-заглушку

P.S. К сожалению готового решения предложить не могу, так как, вариантов решения задачи много.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Re: [Сеть, интернет] Как установить в IE режим автономной работы

Garrett
Во первых громадное спасибо,что уделил время рассматриваемому вопросу.
Я столько времени затратил.на попытку решить проблему,что не хочется оставлять ее не решенной.Я ведь c НTML знаком лишь поверхностно,отсюда и сложности.
Garrett [?]
Ещё, (как вариант) можно, выдёргивать из документа нужную информацию, складывать её в базу, считывать при необходимости, и выводить в GUI любым удобным способом.
Я пошел приблизительно этим же путем :

Сохранял в HTML -файл только необходимую информационную часть.

Причем все это делал с помощью Opera AC .Уж больно задолбал меня IE. ( недаром я им не пользуюсь.)
IE пытался использовать,т.к. Opera . кажется не поддерживает COM-объекты.

После прочтения твоих сообщений еще больше утвердился в том,что все проблемы от получения страницы с помощью IE.

Сейчас попробовал выделить и сохранить всю страницу (опять же с помощью Opera). Получил нормальный результат :
Устанавливал необходимый фон страницы и , на удивление получил вполне приемлемый результат. !!!
Работает страница в объектном GUI-окне вроде нормально.
Судя по скорости -все же из сохраненной страницы.
Все ссылки работают : ( Внешние на ИНЕТ)
При отсутствии Инета страница грузится из КЭША(при ее наличии там).
При ее отсутствии в КЭШе-моментально вылазит инфо о невозможности открытия страницы.

Кстати об изменении режима автономной работы. Я понял так, что лучше вообще этим не заниматься.
Оказывается многие приложения работают через IE.
Я установил автономный режим и потом битый час не мог понять : почему у меня только что, переустановленный Skype не хочет работать .

Так,что может и тему переименовать надо.
Конечно надо погонять по разным страницам , потестить.
Кстати можно предотвратить зависание скрипта при возможном нажатии на отсутствующую ссылку ?.
Может все это можно реализовать полностью на Opera ? Ведь Opera AC сделана же.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: [Сеть, интернет] Как установить в IE режим автономной работы

gregaz [?]
Кстати можно предотвратить зависание скрипта при возможном нажатии на отсутствующую ссылку ?
Думаю да. Нужно только определиться, каким способом перехватывать событие "click"
Допустим в IE это можно обработать через IE.au3 (посредством JavaScript) функцией _IEHeadInsertEventScript
Код:
_IEHeadInsertEventScript ($oIE, "ID - элемента", "onclick", "JavaScript Функция обработки события")

При клике по ссылке ID которой указан в _IEHeadInsertEventScript будет отработана функция обработки события на JavaScript которая перехватит ответ заголовка, и по ответу в заголовке, можно будет судить, существует данная страница или нет, доступен сервер или нет и т.д.
Можно ещё попробовать выставлять TimeOut, и прекращать загрузку несуществующей страницы, если лимит TimeOut превышен.
По поводу IE. Да, безусловно, у него очень много минусов, но один большой плюс, это возможность работать с ним посредством COM интерфейса, что не даёт ни один другой браузер. :(
Даже плагин, который позволяет работать с Firefox в Autoit MozRepl, увы, не даёт такой гибкости.
[box title=IMHO]Кстати, вот по этому Windows и IE ещё не скоро уступят пальму первенства на РС пользователей. Дядя Билл на поверку оказался хорошим психологом ;D API, ОOП, СОМ, всё это модульность, своего рода аналог LEGO. Это даёт свободу творчеству, и возможность прогрессировать. Это подтверждает, и тот факт, что многие монстры веб-технологий сегодня в спешном порядке разрабатывают и анонсируют API для своих продуктов!
Он хорошо выучил урок IBM в своё время. Ведь благодаря IBM мы сейчас можем иметь у себя на столе ту конфигурацию РС которая нам по душе! ;)[/box]
 
Верх