1 (изменено: Mickey666x, 2011-03-24 21:34:45)

Тема: VBScript: объект Internet Explorer, работа с фреймом

Дан фрейм. В него загружается страница. Потом страница покидает фрейм. Я знаю что есть защита от помещения страницы в фрейм. Можно с этим бороться? Или как вообще отменить навигацию, когда он попытается покинуть фрейм.
Как есть:

Set IE=CreateObject("InternetExplorer.Application")
IE.Visible=True
IE.Navigate "http://www.demogorgon.ru/"
WScript.Sleep 10000
IE.Navigate "http://www.sumaclicks.com", Null, "mainFrame"

А вот пример как надо:

Set IE=CreateObject("InternetExplorer.Application")
IE.Visible=True
IE.Navigate "http://www.demogorgon.ru/"
WScript.Sleep 10000
IE.Navigate "ya.ru", Null, "mainFrame"

Спасибо!

2 (изменено: Mickey666x, 2011-03-24 22:23:53)

Re: VBScript: объект Internet Explorer, работа с фреймом

Я знаю что секрет кроется в событии BeforeNavigate2. Только как остановить загрузку фрейма вообще.

Sub IE_BeforeNavigate2(ByVal pDisp, ByRef url, ByRef Flags, ByRef TargetFrameName, ByRef PostData, ByRef Headers, ByRef Cancel)
    If InStr(URL, "demogorgon") > 0 Then
        Exit Sub
    Else
        pDisp.Stop
    End If
End Sub

Вот что то вроде того, но навигация продолжается.

3

Re: VBScript: объект Internet Explorer, работа с фреймом

Dim InternetExplorer, ExitDo
Set InternetExplorer = WScript.CreateObject("InternetExplorer.Application","InternetExplorer_")
InternetExplorer.Visible = True

InternetExplorer.Navigate "http://www.ya.ru/"

WScript.Sleep 5000

InternetExplorer.Navigate "http://www.demogorgon.ru/"

Sub InternetExplorer_OnQuit()
    ExitDo = True
End Sub

Sub InternetExplorer_BeforeNavigate2(ByVal pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel)
    if InStr(1,URL,"demogorgon",1) > 0 then 
        InternetExplorer.Navigate "about:blank"
    End if    
End Sub

Do
    WScript.Sleep 100
Loop Until ExitDo

MsgBox "Internet Explorer closed", vbInformation

либо для фреймов

InternetExplorer.Navigate "about:blank"

заменить на

pDisp.Navigate "about:blank"

P.S Вообще по идее нужно присваивать Cancel = True. Но что то не хочет он работать. И метод Stop тоже не спасает

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4 (изменено: Mickey666x, 2011-03-25 01:26:03)

Re: VBScript: объект Internet Explorer, работа с фреймом

Спасибо! допер! Я вопрос немножко неправильно поставил. И еще вопросик: че он как трактор трещит?

Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Navigate "http://mickey666x.narod.ru/other/frame.html"
IE.Visible = True

Do
    WScript.Sleep 200
Loop Until IE.ReadyState = 4

While 0=0
    WScript.Sleep 1000
Wend

Sub IE_BeforeNavigate2(ByVal pDisp, ByRef url, ByRef Flags, ByRef TargetFrameName, ByRef PostData, ByRef Headers, ByRef Cancel)
    
    If InStr(URL, "mickey666x") > 0 Then
        Exit Sub
    Else
        pDisp.Navigate "about:blank"
        Cancel = True
    End If
End Sub

Sub IE_OnQuit()
    MsgBox "Вы закрыли Internet Explorer",vbInformation,"Internet Explorer"
    WScript.Quit
End Sub

5

Re: VBScript: объект Internet Explorer, работа с фреймом

OFF: Не трещит, а щёлкает ! ) Это новая фича (feature) ослика. Таким образом майкрософт создаёт эффект сложности механизмов работающих внутри IE. (Работает как часы).

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !