![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение текста в WebBrowser без сохранения на диск [D6, XP]
Artem © (2008-02-16 04:05:00)Подскажите, пожалуйста, как можно изменить текст htm-страницы, которая находится в ресурсах программы и которая отображается в браузере таким образом:
wb.navigate('res://'+application.exename+'/P1');
Мне надо взять вот эту "P1", найти в ней слово и заменить его на другое. Крайне нежелательно сохранять страницу на диск (требование), а сделать все "на лету".
Кто подскажет как это реализовать?
Заранее благодарю.
fufel (2008-02-19 16:10:00) [1]Народ, а вот теперь интересный вопрос.
как в WebBrowser1 отрубить явя скрипты?
а точнее заблочит обнавление страницы Javascrip`том
palva (2008-02-18 22:40:00) [2]> говорите, что не знает что такое Unassigned
Ну вы же знаете что это такое. Так подскажите компилятору, откуда взять эту функцию.
fufel (2008-02-18 22:00:00) [3]Вот кусок кода. меняет текст страници налету.
WebBrowser1.OleObject.document.getElementById('lright1').innerHTML:= 'ja genij';
всё аботает )))
Artem (2008-02-18 11:13:00) [4]Пробую код [14], выдает ошибку на строке
e := ec.item(Unassigned, 0) as IHTMLElement;- говорите, что не знает что такое Unassigned
Artem (2008-02-18 11:09:00) [5]Спасибо большое за советы, попробую.
homm (2008-02-16 21:09:00) [6]> [17] palva © (16.02.08 20:27)
> что он имеет свойство href, а если тэг <BR>, то у него нет
> свойства innerHTML. А про тэг USER ничего не известно.
Дело в том, что (по крайней мере в js) обращение к несуществующему полю объекта не является ошибкой, просто значение будет undefined. Ошибка здесь возникает именно потому что возвращенный undefined нельзя интерпретировать как объект и пытатся вызывать у него методы.
palva (2008-02-16 20:27:00) [7]Произвольные тэги скорее всего добавляются, но они не имеют нужных свойств. Если, к примеру, у нас тэг А, то уже известно, что он имеет свойство href, а если тэг <BR>, то у него нет свойства innerHTML. А про тэг USER ничего не известно. Приходится делать вручную.
Можно использовать тэг SPAN включить внего атрибут id и искать тэг по атрибуту функцией GetElementById
homm (2008-02-16 20:15:00) [8]Все дело оказалось в том, что нельзя использовать проивольные теги, видимо они просто не добавляются в дом-дерево.
Код [3] верен, только имя тега замени.
palva (2008-02-16 20:13:00) [9]
> palva © (16.02.08 20:10) [14]
uses MSHTML;
palva (2008-02-16 20:10:00) [10]
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('about: 111<BR><SPAN>222</SPAN><BR> 333');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
d: IHTMLDocument2;
ec: IHTMLElementCollection;
e: IHTMLElement;
begin
d := WebBrowser1.Document As IHTMLDocument2;
ec := d.all.tags('SPAN') As IHTMLElementCollection;
e := ec.item(Unassigned, 0) as IHTMLElement;
e.innerHTML := 'Вася Пупкин';
end;
Бегущий человек (2008-02-16 19:28:00) [11]>Wb.OleObject.Document.All.tags('user')[0].innerHTML = 'Вася Пупкин';
:=
? :)
homm (2008-02-16 19:26:00) [12]
Wb.OleObject.Document.All.tags('user')[0].innerHTML = 'Вася Пупкин';
homm (2008-02-16 19:26:00) [13]Еще подумай.
Artem (2008-02-16 19:23:00) [14]Вот так?
Wb.OleObject.Document.All.tags('user').item[0].innerHTML = 'Вася Пупкин';
?
Не работает.
homm (2008-02-16 19:20:00) [15]> [8] Artem (16.02.08 19:16)
Ну блин, значит поtags('User')возвращается не коллекция, а массив, и поступ к нему по квадратным скрбкам.
Artem (2008-02-16 19:16:00) [16]Хоть делай, хоть не делай - все равно
Wb.OleObject.Document.All.tags('User').item(0).innerHTML:='Пользователь';< /CODE> не работает
palva (2008-02-16 17:48:00) [17]Не надо делать
designmode:='On';
Это делается для правки документа с клавиатуры. В таком режиме выполнение скриптов блокируется. Это если верить следующему документу:
http://msdn2.microsoft.com/en-us/library/ms533720(VS.85).aspx
Artem (2008-02-16 15:19:00) [18]Подскажите, пожалуйста, как одолеть этого зверя?
Artem (2008-02-16 14:52:00) [19]Пишу:
Wb.OleObject.Document.designmode:='On';
Wb.OleObject.Document.All.tags('User').item(0).innerHTML:='Пользователь';
Выдает ошибку OLE Error 800A0258
Artem (2008-02-16 14:37:00) [20]Выдает Ole-ошибку