Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> webbrowser, фреймы,url... 
:(
    Опции темы
progbeg
Дата 17.7.2006, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



У меня новый вопрос из той же серии....
   Загружается страница, на которой есть фреймы. В одном из фреймов (не верхнем) есть список, откуда я выбираю нужно мне значение. Открывается новая страница, на которой есть некоторые ссылки. Я их собираю в массив. После того, как я их загружаю, оказывается, что все эти ссылки в общем-то верные, но только в том плане, что загружают они ссылку нужную, но как будто в списке выбиралось не то, что мне нужно, а то, что стоит по умолчанию. Как решить проблему? 
PM MAIL   Вверх
December
Дата 17.7.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Попробуй изложить вопрос более техническим образом.
Например: "когда программно выбираешь определённое значение из выпадающего списка таким-то кодом, то при дальнейшей навигации оказывается, что выбранное значение списка игнорируется". С примерами:
1) как ты пытаешься это сделать
2) минимальная HTML вёрстка, на которой воспроизводится поведение
Потому что, как ты уже догадалась, текущее описание проблемы скорее эмоционально, чем информативно smile 


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
progbeg
Дата 17.7.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Хорошо.
Код такой:
Код

for i := 0 to Webbrowser1.OleObject.Document.Frames.Length - 1 do
   begin
       if Webbrowser1.OleObject.Document.Frames.item(i).name='frmMain' then
           begin
                ovElements:=Webbrowser1.OleObject.Document.Frames.item(i).document.forms.item(0);
                   for j:=0 to ovElements.Length-1 do
                       begin
                          if (ovElements.item(j).tagName ='SELECT') and
                              (ovElements.item(j).id='Lid') then
                                 begin
                                    for k:=0 to ovElements.item(j).length-1 do
                                      if ovElements.item(j).item(k).value='xxx' then
                                         ovElements.item(j).item(k).selected:=true;
                                         ovElements.item(j).OnChange;
                                         load(webbrowser1,statusbar1);
                                         ListBox1.Clear;
                                         k:=1;
                                         Flags:=1;
                                         for l := 0 to Webbrowser1.OleObject.Document.Frames.item(3).document.links.Length - 1 do
                                            begin
                                              if 
                                                 (Webbrowser1.OleObject.Document.Frames.item(3).document.Links.Item(l).innertext='Äâîéíîé øàíñ') or
                                                 (Webbrowser1.OleObject.Document.Frames.item(3).document.Links.Item(l).innertext='Ôîðû') or
                                                 (Webbrowser1.OleObject.Document.Frames.item(3).document.Links.Item(l).innertext='Áîëüøå/ Ìåíüøå')
                                              then
                                                 begin                                                  Webbrowser1.Navigate(Webbrowser1.OleObject.Document.Frames.item(3).document.Links.Item(l),Flags,TargetFrameName, PostData, Headers);
                                                    load(webbrowser1,statusbar1);
                                                    arlinks[k]:=Webbrowser1.OleObject.Document.Frames.item(3).document.Links.Item(l);
                                                    k:=k+1;
                                                 end;
(*end'ы опустим*)


Только тапками не кидать! 
PM MAIL   Вверх
December
Дата 18.7.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



1) Форматирование - великая весчь... Это вместо тапка...
2) Если в OnChange перезагружается или модифицируется фрейм frmMain, то ovElements становится невалидным
3) Webbrowser1.Navigate в цикле перебора ссылок может привести к невалидности перебора
4) Я так подозреваю (основываясь на первом посте), проблема должна находиться в этом куске:
Код
for k:=0 to ovElements.item(j).length-1 do    
  if ovElements.item(j).item(k).value='xxx' thenovElements.item(j).item(k).selected:=true;    
ovElements.item(j).OnChange;    
load(webbrowser1,statusbar1);

Проверяла ли ты, как оно работает без OnChange? Выбирается ли то, что надо? 


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
progbeg
Дата 18.7.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Цитата

3) Webbrowser1.Navigate в цикле перебора ссылок может привести к невалидности перебора

Это неважно - были попытки сначала загнать ссылки, потом уже их открывать. Это просто один из вариантов.
Цитата

Проверяла ли ты, как оно работает без OnChange? Выбирается ли то, что надо?

Без OnChange опция просто выбирается, но страница нужная не загружается. То есть загрузки страницы удалось достичь только с применением этого метода, который прописан в теге. 
PM MAIL   Вверх
December
Дата 18.7.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



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


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
progbeg
Дата 18.7.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Выбирается опция в списке (select - combobox). Как только она выбирается, должна загрузиться страница (там скрипт висит на кнопке.)Только! загружается не полностью страница, а только один фрейм, в котором и находится нужная информация (ну это так и должно быть). На этой загрузившей странице имеются ссылки на другие страницы. Я знаю их innertext, по нему и ищу. Найдя  (код был приведён), я записываю их в массив. После всего цикла, я пробегаюсь по этому массиву и открываю в отдельных окнах браузера найденные ссылки. Только получается, что ссылки все верные (то есть innertext правильно был найден), но эти ссылки должны были находиться на странице, которой соответсвует тот пункт меню (select), который был выбран, а получается, что опция не выбиралась, а осталась та, которая по умолчанию.
Вот так. smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.