webbrowser设置html内容,delphi 修改WebBrowser的内容

本文探讨了在WebBrowser中使用innerHTML进行内容修改时遇到的数据丢失问题,介绍了一种通过IHTMLDocument2的write方法解决该问题的方法,并揭示了异常出现的规律。关键在于在write操作后加入FDoc.close以确保内容持久化。
摘要由CSDN通过智能技术生成

很多方法都可以修改WebBrowser的内容。比如说修改innerHTML、以流方式修改。

以流方式就不说了,网上很多代码。直接修改innerHTML的方法很简单,但是有个缺点,修改后没保存,最近在做一个小东西,需要在WebBrowser编辑模式和浏览模式中切换,直接修改innerHTML的问题是,切换之后修改的数据丢失了。

另一种修改方法,利用IHTMLDocument2的write方法写入:

procedure write(AText: string);

var

psSafe: PSafeArray;

param: PVariantArg;

pwsValue: TBStr;

begin

try

pwsValue := SysAllocString(PWideChar(WideString(AText)));

psSafe := SafeArrayCreateVector(VT_VARIANT, 0, 1);

if psSafe <> nil then

try

SafeArrayAccessData(psSafe, Pointer(param));

param^.vt := VT_BSTR;

param^.bstrVal := pwsValue;

SafeArrayUnaccessData(psSafe);

FDoc.write(psSafe);

finally

SysFreeString(pwsValue);

SafeArrayDestroy(psSafe);

end;

except

end;

end;

奇怪的是,多写入几次,总会抛出异常。尝试将原来的内容完全清除还是没用。

偶然发现,只须在write后加入FDoc.close就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值