Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение текста в WebBrowser без сохранения на диск [D6, XP]


Страницы:   1 2

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-ошибку


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо