Как заменить стиль в Twebbrowser

  • Автор темы AlexSuv
  • Дата начала
A

AlexSuv

#1
Можно ли каким-то образом заменить один стиль на другой или изменить элемент стиля внутри TWebBrowser не обновляя весь объект т.е. работать должно все очень быстро.

Например имем HTML документ загруженный в WebBrowser и содержащий стиль
table table {background-color: rgb(255,0,0)},
а надо его заменить например на table table {background-color: rgb(255,255,255)}

сами названия стилей менятся не будут, только элементы внутри, хотя если можно
заменить весь стиль (<style> ... </style>) тоже было бы неплохо.

Помогите плиз, вроде задачка простая, а решения ни как не найду.

Максимум что удалось найти это типа:

WebBrowser1.OleObject.Document.all.tags('TABLE').item(0).style.backgroundColor := clRed

работает мгновенно, но мне прийдется менять стили типа table table table tr ... и вычислять пути, что оооочень неудобно и коряво, должен же быть простой способ типа:

WebBrowser1.OleObject.Document.styles[3].InnerHtml := 'table table {background-color: rgb(255,255,255)}'

неужели такого нет. :)
 
A

AlexSuv

#2
Спасибо все кто ответил :). Задачка и впрямь была тривиальная,все из-за незнания матчасти.

Короче решение простое:

Код:
Var
sh : OleVariant;
begin
sh := WebBrowser1.OleObject.Document.styleSheets.item(3);//3 это порядковый номер стиля в коллекции 
sh.cssText := 'table table table {border-color: rgb(255,255,255) !important;}';
End;
Заменяет 4-й по порядку стиль (он у меня последний) на этот код и все равботает без обновления самого вебброузера - быстро и комфортно