powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Доступ к массиву из раздела script в файле .htm
10 сообщений из 10, страница 1 из 1
Доступ к массиву из раздела script в файле .htm
    #35986625
ddimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Помогите пожалуйста, вот задача:

Есть программа (форма), написанная на VBasic Express Edition, в ней - элемент WebBrowser1 (тип WebBrowser),
который вызовом WebBrowser1.Navigate("www.xxx.ru") загружает и показывает интернет-страницу.
Сокращенный код страницы следующий:
-----------------------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<html>
<body>

Html-часть документа

<script language="JavaScript" type="text/JavaScript">
var massiv = new Array();
var variable=1;
massiv[0] = new Mass();massiv[0].Name = "Name1";massiv[0].Type = "type-1";massiv[0].Size = 12;
massiv[1] = new Mass();massiv[1].Name = "Name2";massiv[1].Type = "type-2";massiv[1].Size = 23;
massiv[2] = new Mass();massiv[2].Name = "Name3";massiv[2].Type = "type-3";massiv[2].Size = 4;
function Mass()
{
}
</script>
</body>
</html>
-----------------------------------------------------------------------------------------------
После загрузки страницы мне необходимо, нажав кнопку в форме, получить значения переменных из секции script этого документа.
В программе-обработчике нажатия этой кнопки следующий код (VBasic)
Dim x1,x2,x3
x1 = WebBrowser1.Document.DomDocument
x2 = x1.script.variable ' работает, и x2 получает значение 1
x3 = x1.script.massiv ' работает, но возвращает System.__CommObject, чего с ним дальше делать не пойму
x3 = x1.script.massiv(0).Name ' !!! НЕ работает, т.е. не могу получить доступ к элементам массива massiv !!!, возвращает ошибку 'член группы не найден'

Подскажите пожалуйста, как получить значения из элементов массива massiv[0].Name, massiv[0].Type и т.д.

Заранее спасибо.
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35987003
breathem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы вазджэ читали про функции и их объявления в JS? Нет? Жаль...

Учебник

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<script language="JavaScript" type="text/JavaScript">
        var massiv = new Array();
        var variable= 1 ;
        function Mass()
        {
            this.Name = "";
            this.Type = "";
            this.Size =  0 ;
        }
        massiv[ 0 ] = new Mass();massiv[ 0 ].Name = "Name1";massiv[ 0 ].Type = "type-1";massiv[ 0 ].Size =  12 ;
        massiv[ 1 ] = new Mass();massiv[ 1 ].Name = "Name2";massiv[ 1 ].Type = "type-2";massiv[ 1 ].Size =  23 ;
        massiv[ 2 ] = new Mass();massiv[ 2 ].Name = "Name3";massiv[ 2 ].Type = "type-3";massiv[ 2 ].Size =  4 ;
        function test()
        {
            alert("Name:"+massiv[ 0 ].Name+";Type:"+massiv[ 0 ].Type+";Size:"+massiv[ 0 ].Size);
        }
    </script>
    <body>
        <input type="button" onclick="javascript:test();" value="test">
    </body>
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35987295
ddimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылку на учебник.
Код html-страницы моя программа загружает с сайта в объект WebBrowser, он написан не мной и менять я его не могу. Суть вопроса в том, что загрузив в мою программу чужую html-страницу дальше необходимо ее проанализировать, а точнее получить значения элементов массива, который объявлен и инициализирован в этой странице . Получить значение отдельной переменной удается, а вот массива-нет.
Спасибо всем, кто присоединится к обсуждению.
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35989079
breathem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ddimon, тогда передайте тому, кто писал данный html код, чтобы больше так не шутили, а то и до инфаркта не далеко :)
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35989174
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ddimon
x3 = x1.script.massiv ' работает, но возвращает System.__CommObject...возвращает ошибку 'член группы не найден'

Код: plaintext
1.
x3 = x1.script.massiv.Item( 0 ).Name
???
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35989192
ddimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x3 = x1.script.massiv.Item(0).Name
к сожалению тоже не работает, возвращает ошибку 'Общий член "Item" для типа "JScriptTypeInfo" не найден.'
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35989306
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в васике нЭт ничего а-ля foreach/for( in )? [size](чтобы пробежаться и посмотреть, что имеет x1.script.massiv)

P.S. Debugger, по идее, для System.__CommObject ничего вразумительного не покажет, но, мало ли... Смотрели?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35989359
ddimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
УРРАААА! УРРАААА! Работает!!!

For Each x4 In x1.script.massiv
x5 = x4.Name
x5 = x4.Type
x5 = x4.Size
Next

Ex_Soft, Вы умница! Спасибо большое!
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35989954
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/me думает: гм... вообще-то - подразумевалось другое. Типо пробежаться по всем свойствам/функциям (а-ля как в JS'е) и посмотреть, что там у x1.script.massiv ЭстЪ а-ля item для доступа к коллекции....
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Доступ к массиву из раздела script в файле .htm
    #35990514
ddimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В теле For Each переменная x4 представляет собой System.__CommObject, и как Вы правильно заметили, что Debugger не показывает для нее ровным счетом ничего. Работать с ней можно или как с целым объектом или получать доступ к полям его структуры через x4.Name, x4.Type и т.д, а как посмотреть, есть ли в этом объекте еще что-нибудь я не знаю.

For Each x4 In x1.script.massiv
debug.writeline(x4) -> "System.__CommObject"
debug.writeline(x4.Name) -> "Name1"
Next

Но проблема в любом случае решена, причем работает и присваивание значения, т.е. справедливо
x4.Name="Text new"
script это проглатывает и работает с новым значением. Также получилось и вызывать функции script-а с передачей параметров и возвратом результата. Власть над html-страницей почти полная. Единственное, что не удалось преодолеть, это вывод сообщений скриптом функциями alert и т.п. Пришлось на время загрузки страницы повесить таймер, который шлет клавиатуре {ESC}, таким образом сбрасывая эти сообщения. Но это терпимо, хотя решение некрасивое и кривое.

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


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