Присвоение элементам MSHTML новых значений

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dr-vic
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 13.01.2004 (Вт) 0:05

Присвоение элементам MSHTML новых значений

Сообщение dr-vic » 04.09.2004 (Сб) 0:40

Подскажите - чего не так!
Вопрос следующий: на форме - вебброузер, задача - не выгружая
документа произвести рекодировку из KOI в WIN.
Код примерно следующий:

For Each ObjText In WebDoc.All
text = ObjText.innerText
text = RecodeToWin(text)
ObjText.innerText = text
Next

Ругается на строчку присвоения свойству innerText нового значения:
"...ошибка 600... Недопустимый конечный элемент для данного действия"
Как я понимаю, присваивать значение надо как-то по другому. А как?
И, вообще, что это за "конечный элемент"?
Пробовал, к стати, и .insertAdjactentText - то же самое.
Единственное, что проходит - конвертировать во временный файл и грузить его снова, но все это до того коряво!
Заранее благодарен.

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 06.09.2004 (Пн) 9:30

Dim WebDoc As MSHTML.IHTMLDocument
'...
text = WebDoc.documentElement.outerHTML
text = RecodeToWin(text)
WebDoc.write text

dr-vic
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 13.01.2004 (Вт) 0:05

Сообщение dr-vic » 07.09.2004 (Вт) 13:01

Marvan, спасибо! С перекодировкой получается чудно! Только, может, подскажешь,
как все-таки подобные операции проделывать по отношению к отдельным тэгам.
Тут, скорее, даже не кодировка, а что-нибудь типа:
Код:
For Each objLink in HTMLDoc.links
oldLinkText=objLink.innerText
objLink.innerText = newLinkText - не работает
Next
А как быть с таким?
For Each objLink in HTMLDoc.links
oldLink=objLink.toString
objLink.toString = newLink - Конечно же не работает!
Next
Если знаешь, напиши, пожалуйста. Самому никак не получается разобраться.
Ты в своей теме по сходной тематике писал про getElementByTagName. По логике должно иметься что-то типа setElements..., но ничего подобного я
не обнаружил...
Заранее благодарен.

dr-vic
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 13.01.2004 (Вт) 0:05

Сообщение dr-vic » 11.09.2004 (Сб) 23:57

Народ, ну не обходите молчанием тему, научите неразумного...

dr-vic
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 13.01.2004 (Вт) 0:05

Сообщение dr-vic » 06.10.2004 (Ср) 0:58

Коль никто не отвечает - сообщаю, что разобрался сам, чтобы закрыть тему -
вдруг кому-нибудь еще понадобтся!
Пример меняет пути к картинкам в HTML на новые:

Private IE As InternetExplorer

Dim imgSRC As String, i As Integer, imgSRCNew As String
Dim IEDoc As HTMLDocument

Set IE = New InternetExplorer
IE.navigate HTMLName
Do While Not IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set IEDoc = IE.document
imgCount = IEDoc.getElementsByTagName("IMG").length - 1
For i = 0 To imgCount
imgSRC = IEDoc.getElementsByTagName("IMG").Item(i).src
IEDoc.getElementsByTagName("IMG").Item(i).src = imgSRCNew
Next

Ну и, конечно, не забыть переписать файл на диске.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList