Хук на IE

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.10.2005 (Вт) 13:07

document.body.all.tags("какой там тэг? FRAME?") :?:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 19.10.2005 (Ср) 0:56

Угу, вариант. Только не работает :) Еслит таким образом получать ссылку на HTMLDocument, почему то события не приходят :( А вот если через window.frames(0 .... n).document работает нормально... Никто не знает, в чем проблема?
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 19.10.2005 (Ср) 15:34

М-м-м. Ага, проблема вот в чем: window.frames(n) возвращает объект типа MSHTML.HTMLWindow2, а document.body.all.tags("IFRAMES"), например, - MSHTML.HTMLIFrame. Соответственно, события не обрабатываются... А где взять коллекцию фреймов именно как MSHTML.HTMLWindow2?
То, что для одних константа, для других только переменная...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2005 (Ср) 16:36

А если просто кастануть?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 19.10.2005 (Ср) 17:03

В смысле?
То, что для одних константа, для других только переменная...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2005 (Ср) 17:16

Объявляешь переменную нужного типа (HTMLWindow2), присваиваешь ей переменную ненужного типа (HTMLIFrame), если это возможно, ошибки не будет, если нет, посмотрим дальше :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 19.10.2005 (Ср) 18:09

Да, так срабатывает. Только вот потом получить document из такой переменной не получается - падает с ошибкой... Да, DOM это великая загадка современности :D
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 20.10.2005 (Чт) 0:00

Ладно, может так будет проще. Вот пример с фреймами и все варианты, которые я перепробовал, чтобы к ним добраться... Може все же кто-то подскажет в чем проблема? ;)
Вложения
HtmlFrames.zip
Мои попытки долезть к фреймам
(3.93 Кб) Скачиваний: 32
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 20.10.2005 (Чт) 11:45

Гм... Что, никто не знает? Значит мои знания DOM не так уж и плохи :D
То, что для одних константа, для других только переменная...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 11:55

Я обычно знаю то, с чем сталкивался :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 12:04

На VB с DOM не работал, поэтому не знаю, как там что, но...

У Document нет коллекции Frames. Коллекция frames есть ТОЛЬКО у window. Коллекцию iframes я вообще нигде не нашел.

На всякий случай, вот ссылка на полное описание DOM:

http://www.w3schools.com/htmldom/default.asp
Быть... или не быть. Вот. В чём вопрос?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 20.10.2005 (Чт) 13:38

Я обычно знаю то, с чем сталкивался

Ну как и все мы ;) Если бы я сталкивался с этим раньше, я бы и не спрашивал, наверное...

У Document нет коллекции Frames. Коллекция frames есть ТОЛЬКО у window.

Нет. Как раз именно у document колекция frames и есть. Ибо фрейм не более чем часть родительского документа. И фрейм ну никак не может быть напрямую дочерним объектом window ;)

Коллекцию iframes я вообще нигде не нашел.

А вот ее как раз и нет, так как iframe всего лиш часный случай frame и все iframe включены в document.frames...
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 20.10.2005 (Чт) 14:12

Маленькая поправочка: в document коллекцию frames держит IE. Другие браузеры могут держать и в window, что не совсем логично как по мне...
Ладно, никто не знает, инфы - 0... Буду значит делать через ...
То, что для одних константа, для других только переменная...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 14:36

Возможно, так оно и есть. По той спецификации, на которую я дал ссылку, не так, но я сам, как теперь вспоминаю, использовал document.frames. В общем, удачи, больше, увы, ничем помочь не могу.

ЗЫ То, что ты писал про "фрейм не более чем часть родительского документа": про iframe - так оно и есть, но если у тебя два равноправных фрейма, кто из них часть кого?
Быть... или не быть. Вот. В чём вопрос?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.10.2005 (Чт) 16:34

'Так падает со ошибкой "Method 'frames' of object 'DispHTMLDocument' failed"

И я натыкался на эти грабли. Сделай так:
Код: Выделить всё
Dim dc As MSHTML.HTMLDocument
    Set dc = IEWin.document
    For nI = 0 To IEWin.document.frames().length-1
        Set IEFrames(nI).IEDoc = dc.frames(nI).document
    Next nI

Остальные варианты тоже заработают.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.10.2005 (Чт) 16:43

И еще один момент. Хотя в эксплорере страница после навигации отображается моментально, структура объектов заполняется не сразу. С этим могут быть связаны всякие неочевидные глюки. Я объявлял глобальный флажок и крутил в цикле DoEvents, пока в WebBrowser1_DocumentComplete он не установится в true. У тебя немного другой случай, но все равно имей это ввиду.
Лучший способ понять что-то самому — объяснить это другому.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 20.10.2005 (Чт) 17:35

Супер! Именно то, что нужно. Но логично догадаться до такого хода... :D Сегодня выложу плагин в Наших проектах. Всем спасибо.
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.10.2005 (Пт) 1:13

Ну вот, что получилось: http://bbs.vbstreets.ru/viewtopic.php?p=158605#158605 :)
То, что для одних константа, для других только переменная...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 6:38

Я уж думал, забросите это дело, и измените соответственно третью букву в названии топика...
Изображение

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.10.2005 (Пт) 12:13

2tyomitch - во всяком случае топик оригинально назывался бы :D :D :D
То, что для одних константа, для других только переменная...

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93

    TopList