|
как ограбить IE | ☑ | ||
---|---|---|---|---|
0
red14_88
28.02.14
✎
12:11
|
Всем доброго времени суток.
Столкнулся с задачей, аналогичной описанной здесь: http://www.delphimaster.ru/cgi-bin/forum.pl?id=1246480886&n=4 решение в третьем посте - то, что нужно. Вопрос - как можно подобное реализовать в 1С? Отмечу, что сайт открывается только в IE, открывать по URL в эске не прокатит. Всем заранее спасибо. |
|||
1
skunk
28.02.14
✎
12:13
|
если правильно понял ... то как-то так
http://www.1c-club.kz/index.php?showtopic=765 |
|||
2
red14_88
28.02.14
✎
12:19
|
к сожалению, не оно. В примере мы получаем страницу по URL средствами 1С. А у меня условия иные - пользователь работает в IE, что-то там делает (работает ajax), видит некую табличку (просмотр html-кода её показывает). Мне надо добраться до того, что видит пользователь в IE в момент запуска обработки, а не до того, что доступно по некоторому URL в это время.
|
|||
3
nesmen
28.02.14
✎
12:26
|
а можно более подробно что тебе нужно сделать
(0) |
|||
4
nesmen
28.02.14
✎
12:27
|
если получить кокоето значение то помогу
|
|||
5
nesmen
28.02.14
✎
12:40
|
ты открываешь ИЕ через 1С?
|
|||
6
red14_88
28.02.14
✎
12:53
|
Порядок работы примерно такой:
Пользователь открывает IE. Заходит на сайт. Там что-то делает (url не меняется, страница изменяется ajax'ом). Открывает 1С. Нажимает мою кнопку и получает содержимое страницы, открытой в IE. |
|||
7
nesmen
28.02.14
✎
13:07
|
просто сделай в 1С клавишу запуск ИЕ там будет работать с сайтом все едет нормально и у тебя сразу оперативно будут все данные а по другой клавише получает инфу
|
|||
8
nesmen
28.02.14
✎
13:07
|
ты розберал сайты с помощью ИЕ?
|
|||
9
red14_88
28.02.14
✎
13:43
|
(7) не понял
(8) - в (0) ссылка как в делфях разбирал |
|||
10
Infsams654
28.02.14
✎
13:45
|
(0) а зачем IE? В 1С свой броузер есть (Поле HTML документа). На форме через обработчик ожидания периодически обновляешь, чтоб увидеть, что там ajax натворил.
|
|||
11
red14_88
28.02.14
✎
13:48
|
(10) Сайт отказывается работать во всех браузерах кроме ИЕ. Поле пробовал.
|
|||
12
fvadim
28.02.14
✎
13:54
|
(11) запускать скрипт на vbs, который перебирать страницы в ie и вытягивать содержимое в файл
(7) тоже вариант v8: COMОбъект "InternetExplorer.Application" |
|||
13
Fram
28.02.14
✎
13:59
|
(11) ActiveX элемент Microsoft Web Browser попробуй. Если не УФ
|
|||
14
nesmen
28.02.14
✎
14:15
|
сделай кнопку с процедурой
ИЕ = Новый ComОбъект("InternetExplorer.Application"); ИЕ.Visible=1; ИЕ.Navigate("http://10.1.100.16"); Пока ИЕ.ReadyState<4 Цикл КонецЦикла; а потом вторая кнопка "разбор" в которую будет передаватся ИЕ.Document |
|||
15
nesmen
28.02.14
✎
14:16
|
ну эт если через ИЕ
|
|||
16
Infsams654
28.02.14
✎
14:22
|
(11) а во как. Вариант, без всякого притягивания IE через COM и других извращений.
Делаешь свою форму со значимыми данными этой странички (я так думаю, что насколько она будет похожа на то что в IE не суть важно) и обновляешь еЁ пока ajax еще работает. |
|||
17
Infsams654
28.02.14
✎
14:23
|
(16)+ - разобрать html, я думаю догадаешься как
|
|||
18
red14_88
28.02.14
✎
14:37
|
Всем спасибо, но, думаю, стоит прояснить некторые моменты, не подллежащие изменению:
1) Сначала пользователь запускает IE, потом эску. 2) На форме эски сайт не работает. В (14), я так понимаю мы из эски передаем URL, а в текущей задаче URL уже открыть пользователем в браузере. В отдельном браузере Microsoft Internet Explorer. По (12) можно поподробее про скрипт? |
|||
19
Infsams654
28.02.14
✎
14:41
|
(18) прочитал внимательно (16) ? Там же написано - никаких извращений
|
|||
20
red14_88
28.02.14
✎
14:50
|
(19) даже если речь идет о форме html с нужными данными - сайт меня посылает.
|
|||
21
Infsams654
28.02.14
✎
14:55
|
(20) я не про то, просто форма (не html). Она заполняется периодически данными, полученными через HTTPСоедиенение
|
|||
22
fvadim
28.02.14
✎
15:05
|
(18)
Dim objShell : Set objShell = CreateObject("Shell.Application") Dim objWindow For Each objWindow In objShell.Windows if objWindow.LocationURL = "http://ya.ru/" then WScript.Echo objWindow.Document.body.innerhtml end if Next |
|||
23
red14_88
28.02.14
✎
15:06
|
(22) спасибо, будем пробовать, выглядит тем, что нужно.
|
|||
24
fvadim
28.02.14
✎
15:09
|
дубль два
|
|||
25
fvadim
28.02.14
✎
15:12
|
блин
locationURL = тут то, что после ru/" дописывает миста, т.е. должен быть просто урл из адресной строки |
|||
26
fvadim
28.02.14
✎
15:31
|
напрямую из одноэса тоже получилось
|
|||
27
nesmen
28.02.14
✎
15:32
|
(18) можем не передавать урл из 1С просто запуск ие проводить.
|
|||
28
red14_88
28.02.14
✎
15:39
|
Всем спасибо. Наваял такую штуку, работает.
Функция ПолучитьСтрокуHTML(ИнтересующийURL) Shell=Новый COMОбъект("Shell.Application"); Окна = Shell.Windows(); Для Каждого Окно ИЗ Окна Цикл Если Найти(Окно.LocationURL,ИнтересующийURL)>0 Тогда Возврат = Окно.Document.body.innerhtml; КонецЕсли; КонецЦикла; КонецФункции |
|||
29
nesmen
28.02.14
✎
15:47
|
слушай просто вопрос, а что там должен пользователь вводить что ты програмно не введешь? (28)
|
|||
30
miron25
28.02.14
✎
15:52
|
(29)У него бизнес по распознаванию капч...Рабы трудяться.)
|
|||
31
fvadim
28.02.14
✎
15:57
|
(29) тут вроде обратная задача - утянуть со страницы в 1с то, что пользователь наоткрывал
|
|||
32
fvadim
28.02.14
✎
15:58
|
(28) ещё можно попробовать innertext
|
|||
33
nesmen
28.02.14
✎
15:59
|
не ну если там определенные операции делать одинаковые только с разными данными то лучше сделать робота
|
|||
34
nesmen
28.02.14
✎
16:00
|
ну если найдешь елемент то док.ел.value(31)
|
|||
35
red14_88
28.02.14
✎
16:44
|
(29) подбирает автоработы по электронному каталогу. Слева - графическая составляющая. Справа обычная таблица.
С выводами я поторопился, что все работает. Вернее работает, только страничка с фреймами и хз как нужный достать из com-объекта. innerhtml дает только фреймсет. На да, думаю, победю. |
|||
36
nesmen
28.02.14
✎
17:06
|
у тебя ком обьект InternetExplorer.Application? (35)
|
|||
37
nesmen
28.02.14
✎
17:06
|
если да тогда просто попробуй цыклом обойти
|
|||
38
nesmen
28.02.14
✎
17:08
|
Для Каждого обьекта из ИЕ.Document.all.tags("НайменованияТега") Цикл
|
|||
39
red14_88
28.02.14
✎
17:17
|
(38) объект IDispatch, получен как в (28).
|
|||
40
fvadim
28.02.14
✎
17:17
|
или попробовать так
Окно.Document.Frames("название фрэйма").Document.body.innerhtml |
|||
41
nesmen
28.02.14
✎
17:22
|
ну или док.getbyid() или док.getbyname() вроде так пишется
|
|||
42
fvadim
28.02.14
✎
17:28
|
или пойти уже домой :) пятница же
|
|||
43
red14_88
28.02.14
✎
17:40
|
ах-ха-ха-ха, дряхлые немецкие программисты, я Вас наебал!
Возврат Окно.Document.Frames("mainFs").document.Frames("contentFs").document.Frames("infomediaFr").document.Frames("loTreeFr").document.Frames("jobContent1").document.Frames("jobSummaryBody").Document.body.innerhtml; |
|||
44
red14_88
28.02.14
✎
17:41
|
у нас в институте за такой код отчисляли
|
|||
45
nesmen
28.02.14
✎
17:41
|
я бы тебя сам прибил
|
|||
46
nesmen
28.02.14
✎
17:42
|
слушай а ид нету у елементов?
|
|||
47
fvadim
28.02.14
✎
17:50
|
(43) чото бред какой-то. там вёрстка на фрэймах что-ли?
|
|||
48
red14_88
28.02.14
✎
17:59
|
(45) верстка не моя. ИД есть, но поиск по ИД работает только внутри фреймов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |