Что нового

Скрипт не видит всплывающее окно

AlexVong

Новичок
Сообщения
112
Репутация
1
На веб странице есть ссылка которая вызывает через javascript:fnDbOx('nmTb','1','') всплывающее окно (справочник), так вот при использовании след.. кода окно не отлавливается скриптом?
Использую...код с которым мне помогли на форуме
Код:
;~ ....................................
$oIE.document.parentwindow.execScript("fnDbOx('nmTb','1','')")

While Not WinExists ('[CLASS:Internet Explorer_TridentDlgFrame]')
    Sleep(30)
WEnd
;~ ....................................


Точно такие же окна, с таким же классом, и заголовком но вызываемые чз нажатие на кнопку отлавливаются на ура, а вызываемые чз javascript не получается. Скрипт их просто не видит! Может кто с таким сталкивался?
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Garrett
Пример посмотрел ... и он отлично работает, но в этом случае у ссылки справочника нет id.

Код:
<TD id=Gr5 align=middle value="nmTb"><A href="javascript:fnShowDic("fnDbOx('nmTb','1','')">Справочник</A></TD></TR>
Если использовать id=Gr5 - выделяется ячейка в которой находится ссылка на справочник и все.
Код:
$oIE.document.parentwindow.execScript("fnDbOx('nmTb','1','')")

Код открывает всплывающее окно, но следующие строки кода ...
Код:
While Not WinExists ('[CLASS:Internet Explorer_TridentDlgFrame]')
    Sleep(30)
WEnd

не отрабатывают, скрипт просто висит в процессах в ожидании окна ... которое уже есть.
Прошу помощи...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
AlexVong
Я, неспроста вам написал, смотреть внимательней!
Код:
$oIE.document.parentwindow.execScript("fnDbOx('nmTb','1','')")

Код:
$oIE.document.parentwindow.execScript("setTimeout(fnDbOx('nmTb','1',''),1)")

Улавливаете разницу? ;)

P.S. Метод setTimeout выполняет код(или функцию), указанный в первом аргументе, асинхронно. "Асинхронно" - процесс выполняемый независимо от основного процесса.
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Garrett
:'( не получается ... Открывается необходимое нам всплывающее окно и все ... скрипт до бесконечности проверяет условие - Not WinExists ('[CLASS:Internet Explorer_TridentDlgFrame]') при открытом всплывающем окне...

Код:
;~ ....................................
$oIE.document.parentwindow.execScript("setTimeout(fnDbOx('nmTb','1',''),1)")

While Not WinExists ('[CLASS:Internet Explorer_TridentDlgFrame]')
    Sleep(30)
WEnd
;~ ....................................

Жаль не могу дать вам адрес на сайт, он находится в локальной сети.
Просто не могу понять почему с вкладками zTb0-2 работает, а с zTb3 не работает?
Сайт состоит из вкладок - каждая вкладка это ифрейм.
Код:
<TR vAlign=center><TD id=zTb0 class=tabDeactive onfocus=onChangeTab(this) onclick=goPage(this) noWrap align=middle>Учет</TD>
<TD id=zTb1 class=tabDeactive onfocus=onChangeTab(this) onclick=goPage(this) noWrap align=middle>Склад</TD>
<TD id=zTb2 class=tabDeactive onfocus=onChangeTab(this) onclick=goPage(this) noWrap align=middle>Контрагенты</TD>
<TD id=zTb3 class=tabActive onfocus=onChangeTab(this) onclick=goPage(this) noWrap align=middle>Банки</TD>
<TD style="CURSOR: default" width="90%"> </TD></TR>
</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD style="PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; PADDING-TOP: 3px" height="100%" width="100%"><IFRAME style="DISPLAY: none" id=wTab0 height="100%" src="uchet.aspx" width="100%"></IFRAME><IFRAME style="DISPLAY: none" id=wTab1 height="100%" src="sklad.aspx" width="100%"></IFRAME><IFRAME style="DISPLAY: none" id=wTab2 height="100%" src="kontr.aspx" width="100%"></IFRAME><IFRAME style="DISPLAY: block" id=wTab3 height="100%" src="bank.aspx" width="100%"></IFRAME></TD></TR></TBODY>
Может вкладку zTb3 надо сделать активной? Пробывал....
Код:
$tab3 = _IEGetObjById($oIE, 'zTb3')
_IEAction($tab3, 'click')

Но вкладка не становится активной...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
AlexVong
А так.
Код:
$oIE.document.parentWindow.execScript("setTimeout(function(){document.getElementById('zTb3').click()},1)")

#include <IE.au3>

$sUrl = 'адрес'

$oIE = _IECreate($sUrl)
$oIE.document.parentWindow.execScript("setTimeout(function(){document.getElementById('zTb3').click()},1)")
While Not WinExists('[CLASS:Internet Explorer_TridentDlgFrame]')
    Sleep(30)
WEnd
$oDialogBox = _IEAttach("Банки -- Диалоговое окно веб-страницы","DialogBox") ; предполагаю!!!
$b643 = _IEGetObjById($oDialogBox, 's_4')
_IEAction($b643, 'click')
Sleep (3000)
$cbOut = _IEGetObjById($oDialogBox, 'btDd')
_IEAction($cbOut, 'click')
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Garrett
zTb3 -это одна из вкладок на странице, при нажатии на нее указателем она становится активной и отображает информацию одного из четырех ифреймов. :stars: У самого кругом голова.
Код:
$oIE.document.parentWindow.execScript("setTimeout(function(){document.getElementById('zTb3').click()},1)")
- не делает ее активной. Буду пробывать искать решение ...
Спасибо за помощь!
А нет случайно функии которая напрямую работает с class=tabActive?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
AlexVong
Скопируйте весь HTML код вашей страницы в файл (.txt) и дайте на него ссылку.
 
Верх