powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / F1 - JavaScript, ссылка на новое окно
13 сообщений из 13, страница 1 из 1
F1 - JavaScript, ссылка на новое окно
    #34372882
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
В Internet Explorer кликаем на ссылку - страничка открывается в новом окне.

Вопрос:
Есть ли у объекта Internet Explorer (в котором я кликал) или Document ссылочка на новое окошко??
Как получить доступ к DOM в новом окне?

Подскажите плиз..
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34372906
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
window.open возвращает ссылку на window
Код: plaintext
1.
2.
var myWindow = window.open("", "tinyWindow", 'toolbar,width=150,height=100')
myWindow.document....
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34374130
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERwindow.open возвращает ссылку на window
Код: plaintext
1.
2.
var myWindow = window.open("", "tinyWindow", 'toolbar,width=150,height=100')
myWindow.document....


Я правильно понимаю, window.open открывает окно??
Так суть в том, что окно открыл не я, это сделал некий внутренний процесс и мне нужно получить доступ к вновь открытому окну. Вопрос как??? Мне DOM доступен из другого приложения ...
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34382535
Фотография Ferrari8246
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно проблемму более чотко и понятно описать?
Личсно я ничего не понял кроме чтото с новым окном!
если хотите ссылку открыть в новом окне то проще ето зделать на html
пример: <a href="#" target="_blank">открыть в новом окне</a>
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34382566
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, допустим создал я в Delphi объект Internet Explorer
загрузил страничку (теперь мне доступна DOM этой страницы)
программно кликнул на ссылку
новая страница открылась в новом объекте Internet Explorer (так уж сделали)
так вот DOM новой страницы мне недоступен, поскольку был создан новый объект Internet Explorer
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34382627
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю на уровне DOM такого нет
писали на delphi-форум?
наверняка есть что-то вроде события открытия нового окна, которое можно зацепить
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34383059
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, на уровне DOM нет. И момент открытия окна можно определить только сравнив количество окон в системе до и после. Это самое сложное, а дальше просто. Правда на VB, а не Delphi

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
Dim h as Long
Dim d as IHTMLDocument
    h = GetForegroundWindow
    Set d = IEDOMFromhWnd(h)

---------------------------------
Private Type UUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4( 0  To  7 ) As Byte
End Type

Private Const SMTO_ABORTIFHUNG = &H2

Private Declare Function ObjectFromLresult Lib "oleacc" ( _
   ByVal lResult As Long, _
   riid As UUID, _
   ByVal wParam As Long, _
   ppvObject As Any) As Long

Public Function IEDOMFromhWnd(ByVal hWnd As Long) As IHTMLDocument
  Dim IID_IHTMLDocument As UUID
  Dim hWndChild As Long
  Dim lRes As Long
  Dim lMsg As Long
  Dim hr As Long

  If hWnd <>  0  Then
    If Not IsIEServerWindow(hWnd) Then
      EnumChildWindows hWnd, AddressOf EnumChildProc, hWnd
    End If
    If hWnd <>  0  Then
      lMsg = RegisterWindowMessage("WM_HTML_GETOBJECT")
      SendMessageTimeout hWnd, lMsg,  0 ,  0 , SMTO_ABORTIFHUNG,  1000 , lRes
      If lRes Then
        With IID_IHTMLDocument
          .Data1 = &H626FC520
          .Data2 = &HA41E
          .Data3 = &H11CF
          .Data4( 0 ) = &HA7
          .Data4( 1 ) = &H31
          .Data4( 2 ) = &H0
          .Data4( 3 ) = &HA0
          .Data4( 4 ) = &HC9
          .Data4( 5 ) = &H8
          .Data4( 6 ) = &H26
          .Data4( 7 ) = &H37
        End With
        hr = ObjectFromLresult(lRes, IID_IHTMLDocument,  0 , IEDOMFromhWnd)
      End If
    End If
  End If
End Function

Private Declare Function ObjectFromLresult Lib "oleacc" ( _
   ByVal lResult As Long, _
   riid As UUID, _
   ByVal wParam As Long, _
   ppvObject As Any) As Long

Function EnumChildProc(ByVal hWnd As Long, lParam As Long) As Long
  If IsIEServerWindow(hWnd) Then
    lParam = hWnd
  Else
    EnumChildProc =  1 
  End If
End Function

Private Function IsIEServerWindow(ByVal hWnd As Long) As Boolean
  Dim lRes As Long
  Dim sClassName As String
  sClassName = String$( 100 ,  0 )
  lRes = GetClassName(hWnd, sClassName, Len(sClassName))
  sClassName = Left$(sClassName, lRes)
  IsIEServerWindow = StrComp(sClassName, "Internet Explorer_Server", vbTextCompare) =  0 
End Function
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34388790
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, попробую, спасибо
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34389939
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а есть у кого такой же ткстик, только шоб по найденному hwnd возвращал ссылку на Internet Explorer???

Для VB?
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34390125
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле есть способ проще, забыл почему-то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim WithEvents sws As ShellWindows

Private Sub Form_Load()
    Set sws = New ShellWindows
End Sub

Private Sub sws_WindowRegistered(ByVal lCookie As Long)
    'Срабатывает при открытии нового окна IE или Explorer'а
    'В коллекции ShellWindows находятся все их окна, в т.ч. открытые с помошью js.
End Sub
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34391281
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНа самом деле есть способ проще, забыл почему-то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim WithEvents sws As ShellWindows

Private Sub Form_Load()
    Set sws = New ShellWindows
End Sub

Private Sub sws_WindowRegistered(ByVal lCookie As Long)
    'Срабатывает при открытии нового окна IE или Explorer'а
    'В коллекции ShellWindows находятся все их окна, в т.ч. открытые с помошью js.
End Sub


И? Яполучу ссылку на окно или на объект InternetExplorer / WebBrowser?????
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34392157
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На объект IE. Зачем столько вопросов, когда уже давно можно попробовать?
...
Рейтинг: 0 / 0
F1 - JavaScript, ссылка на новое окно
    #34394652
hellpman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНа объект IE. Зачем столько вопросов, когда уже давно можно попробовать?

Да все заработало, спасиб, просто маленькое улучшение )) если есть ответ под рукой ))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / F1 - JavaScript, ссылка на новое окно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]