<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: Понять бы мне работу обьекта InternetExplorer]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7891&amp;type=atom" />
	<updated>2012-12-21T10:02:20Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7891</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Понять бы мне работу обьекта InternetExplorer]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67283#p67283" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>hhelper97 пишет:</cite><blockquote><p>Такой вывод что таймер стартанул ещё при первом событии DownloadComplete</p></blockquote></div><p>Насколько я вижу, при первом <em>DownloadComplete</em> еще не доступен <em>Document</em>, но при втором будет поздно: ежели &lt;SCRIPT&gt; доступен через <em>.innerHTML</em>, то более чем вероятно, что он уже запущен на исполнение; да и вырезать через перезапись <em>.innerHTML</em> не стоит — при этом можно потерять ссылки на элеметы.</p><p>Если устроит, то можно попробовать отключить <em>.setInterval()</em> на странице напрочь, например, заменив функцией-заглушкой:<br /></p><div class="codebox"><pre><code>Sub IE_DownloadBegin()
    On Error Resume Next
    IE.Application.Document.parentWindow.execScript &quot;this.setInterval = function () {};&quot;, &quot;JScript&quot;
    On Error Goto 0
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-21T10:02:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67283#p67283</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: Понять бы мне работу обьекта InternetExplorer]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67262#p67262" />
			<content type="html"><![CDATA[<p>Всем привет!<br />Прошу подсказки в понимании событий обьекта InternetExplorer.<br />Юзаю условную страницу page.php через ИЕ на которой, в теге БОДИ есть тег СКРИПТ в котором стартует таймер setInterval() без ID.<br />Решил своими силами избавиться от таймера применив следующий ниже код. Код сработал но таймер не остановился <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> .<br />Такой вывод что таймер стартанул ещё при первом событии DownloadComplete. Но событие DownloadComplete не имеет аргумента pDisp что-бы &quot;добраться&quot; до innerHTML тега БОДИ <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> .<br />Есть ли тут выход, подскажите плиз!</p><p>И ещё заметил что при загрузки страницы наступают события в непонятной для меня последовательности, т.е. <br />BeforeNavigate2<br />DownloadBegin<br />DownloadComplete<br />DownloadBegin<br />NavigateComplete2<br />DownloadComplete<br />DocumentComplete<br />почему DownloadBegin и DownloadComplete наступают 2 раза?</p><p>Поверьте, искал в сети инфу, но доходчивого описания событий не нашёл <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" />.</p><div class="codebox"><pre><code>
dim IE
Set IE = New IEClass
IE.Application.Visible = True
IE.Application.Navigate &quot;page.php&quot;

Sub IE_BeforeNavigate2(pDisp, url, Flags, TargetFrameName, PostData, Headers, Cancel)
End Sub

Sub IE_DownloadBegin()
End Sub

Sub IE_DownloadComplete()
End Sub

Sub IE_NavigateComplete2(pDisp, URL)
    set a=pDisp.Document
    set b=a.parentWindow
    set c=b.document.all.tags(&quot;body&quot;)(0)
    d=c.innerHTML
    &#039;тут с помощью строковых функций &quot;вырезаю&quot; ненужный кусок кода
    c.innerHTML=d
End Sub

Sub IE_DocumentComplete(pDisp, URL)
End Sub

Sub IE_OnQuit()
    Wscript.Quit
End Sub

Class IEClass
    Public Application
    Private Sub Class_Initialize
        Set Application = WScript.CreateObject(&quot;InternetExplorer.Application&quot;, &quot;IE_&quot;)
    End Sub
    Sub Class_Terminate
        Do
            WScript.Sleep 10
        Loop Until Application = &quot;&quot;
    End Sub
End Class
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[hhelper97]]></name>
			</author>
			<updated>2012-12-21T04:23:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67262#p67262</id>
		</entry>
</feed>
