Текущий архив: 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