Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Изменение текста в WebBrowser без сохранения на диск   Найти похожие ветки 

 
Artem   (2008-02-16 04:05) [0]

Подскажите, пожалуйста, как можно изменить текст htm-страницы, которая находится в ресурсах программы и которая отображается в браузере таким образом:
wb.navigate("res://"+application.exename+"/P1");

Мне надо взять вот эту "P1", найти в ней слово и заменить его на другое. Крайне нежелательно сохранять страницу на диск (требование), а сделать все "на лету".

Кто подскажет как это реализовать?

Заранее благодарю.


 
Artem   (2008-02-16 05:27) [1]

Я понял, что надо работать с браузером, как с OleObject. В моем случае удобнее использовать собственные тэги для замены. Например, <user>.

Вот таким образом выводится количество данных тэгов в документе:
showmessage(Wb.OleObject.Document.All.tags("user").length);

Но никак не пойму, как мне на место этого тэга вставить какой-либо текст?

Народ подскажите, кто работал с этим интерфейсом.


 
Artem   (2008-02-16 14:05) [2]

Никто не знает?


 
homm ©   (2008-02-16 14:33) [3]

Это называется DOM, все знают. Испоьзуй innerHTML, например:

Wb.OleObject.Document.All.tags("user").item(0).innerHTML = "Вася Пупкин";


 
Artem   (2008-02-16 14:37) [4]

Выдает Ole-ошибку


 
Artem   (2008-02-16 14:52) [5]

Пишу:
Wb.OleObject.Document.designmode:="On";
Wb.OleObject.Document.All.tags("User").item(0).innerHTML:="Пользователь";


Выдает ошибку OLE Error 800A0258


 
Artem   (2008-02-16 15:19) [6]

Подскажите, пожалуйста, как одолеть этого зверя?


 
palva ©   (2008-02-16 17:48) [7]

Не надо делать designmode:="On";
Это делается для правки документа с клавиатуры. В таком режиме выполнение скриптов блокируется. Это если верить следующему документу:
http://msdn2.microsoft.com/en-us/library/ms533720(VS.85).aspx


 
Artem   (2008-02-16 19:16) [8]

Хоть делай, хоть не делай - все равно Wb.OleObject.Document.All.tags("User").item(0).innerHTML:="Пользователь";< /CODE> не работает


 
homm ©   (2008-02-16 19:20) [9]

> [8] Artem   (16.02.08 19:16)

Ну блин, значит по tags("User") возвращается не коллекция, а массив, и поступ к нему по квадратным скрбкам.


 
Artem   (2008-02-16 19:23) [10]

Вот так?
Wb.OleObject.Document.All.tags("user").item[0].innerHTML = "Вася Пупкин";
?

Не работает.


 
homm ©   (2008-02-16 19:26) [11]

Еще подумай.


 
homm ©   (2008-02-16 19:26) [12]

Wb.OleObject.Document.All.tags("user")[0].innerHTML = "Вася Пупкин";


 
Бегущий человек ©   (2008-02-16 19:28) [13]

>Wb.OleObject.Document.All.tags("user")[0].innerHTML = "Вася Пупкин";
    :=
? :)


 
palva ©   (2008-02-16 20:10) [14]


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;


 
palva ©   (2008-02-16 20:13) [15]


> palva ©   (16.02.08 20:10) [14]

uses MSHTML;


 
homm ©   (2008-02-16 20:15) [16]

Все дело оказалось в том, что нельзя использовать проивольные теги, видимо они просто не добавляются в дом-дерево.
Код [3] верен, только имя тега замени.


 
palva ©   (2008-02-16 20:27) [17]

Произвольные тэги скорее всего добавляются, но они не имеют нужных свойств. Если, к примеру, у нас тэг А, то уже известно, что он имеет свойство href, а если тэг <BR>, то у него нет свойства innerHTML. А про тэг USER ничего не известно. Приходится делать вручную.

Можно использовать тэг SPAN включить внего атрибут id и искать тэг по атрибуту функцией GetElementById


 
homm ©   (2008-02-16 21:09) [18]

> [17] palva ©   (16.02.08 20:27)
> что он имеет свойство href, а если тэг <BR>, то у него нет
> свойства innerHTML. А про тэг USER ничего не известно.

Дело в том, что (по крайней мере в js) обращение к несуществующему полю объекта не является ошибкой, просто значение будет undefined. Ошибка здесь возникает именно потому что возвращенный undefined нельзя интерпретировать как объект и пытатся вызывать у него методы.


 
Artem   (2008-02-18 11:09) [19]

Спасибо большое за советы, попробую.


 
Artem   (2008-02-18 11:13) [20]

Пробую код [14], выдает ошибку на строке  e := ec.item(Unassigned, 0) as IHTMLElement; - говорите, что не знает что такое Unassigned


 
fufel   (2008-02-18 22:00) [21]

Вот кусок кода. меняет текст страници налету.

WebBrowser1.OleObject.document.getElementById("lright1").innerHTML:= "ja genij";

всё аботает )))


 
palva ©   (2008-02-18 22:40) [22]

> говорите, что не знает что такое Unassigned
Ну вы же знаете что это такое. Так подскажите компилятору, откуда взять эту функцию.


 
fufel   (2008-02-19 16:10) [23]

Народ, а вот теперь интересный вопрос.
как в WebBrowser1 отрубить явя скрипты?
а точнее заблочит обнавление страницы Javascrip`том



Страницы: 1 вся ветка

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1203327368
mfender
2008-02-18 12:36
2008.03.16
Кодировка XML. Не могу осилить...


15-1202197190
Шмелъ
2008-02-05 10:39
2008.03.16
Оффтоп. Linux. /dev/null


2-1203005847
Ega23
2008-02-14 19:17
2008.03.16
CreateProcess - флаги


15-1202049248
AntonUSAnoV
2008-02-03 17:34
2008.03.16
Delphi виснет !


15-1202376215
ANB
2008-02-07 12:23
2008.03.16
"Народные ИПО" - кидалово ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский