该问题与以下内容有关:Which is the best way to load a string (HTML code) in TWebBrowser?
我试图用doc.body.style.fontFamily更改TWebBrowser中的字体,但没有任何反应。字体仍然是TimesNewRoman。
procedure THTMLEdit.SetHtmlCode(CONST HTMLCode: string);
VAR
Doc: Variant;
begin
if NOT Assigned(wbBrowser.Document)
then wbBrowser.Navigate('about:blank');
WHILE wbBrowser.ReadyState < READYSTATE_INTERACTIVE
DO Application.ProcessMessages;
Doc := wbBrowser.Document;
Doc.Clear;
Doc.Write(HTMLCode);
doc.body.style.fontFamily:='Arial'; <------ won't work
Doc.DesignMode := 'On';
Doc.Close;
end;
最佳答案
关闭文档后,您需要使文档再次具有交互性。
例如。:
procedure TForm1.SetHtmlCode(CONST HTMLCode: string);
VAR
Doc: Variant;
begin
if NOT Assigned(wbBrowser.Document)
then wbBrowser.Navigate('about:blank');
//WHILE wbBrowser.ReadyState < READYSTATE_INTERACTIVE // not really needed
//DO Application.ProcessMessages;
Doc := wbBrowser.Document;
//Doc.Clear; // not needed
Doc.Write(HTMLCode);
Doc.Close;
Doc.DesignMode := 'On';
WHILE wbBrowser.ReadyState < READYSTATE_INTERACTIVE
DO Application.ProcessMessages;
doc.body.style.fontFamily:='Arial';
ShowMessage(doc.body.outerHTML); // test it
end;
但是我认为最好的方法是在您知道自己有有效的文档/正文的地方处理
OnDocumentComplete
,并设置样式或其他所需的样式。关于delphi - 如何在TWebBrowser中更改字体?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41957051/