我们如何更改 src 属性以仅具有相对路径



我们有一个DelphiXE程序,它使用TWebBrowser创建HTML文档,并仅将它们的正文存储在SQL数据库中。

现在我们要将图像添加到文档中。当我们添加图像时,在 src 属性中我们有

src="file:///D:/Projects/Test/IMAGES/img_1.GIF"

D:/Projects/Test 是程序和 HTML 文件的位置。

我们希望在 src 属性

中有相对路径,所以当我们更改 src 属性时

s:=elem.outerHTML; 
s:='<IMG border=0 hspace=0 alt="pic 2" src="./IMAGES/955_2.GIF">';
// or s:='<IMG border=0 hspace=0 alt="pic 2" src="IMAGES/955_2.GIF">';
elem.outerHTML:=S

然后 src 属性不会改变,它保持不变

src="file:///D:/Projects/Test/images/Img_1.GIF"

我们使用记事本将 HTML 文件中的基本目录设置为

<BASE href="D:ProjectsTest">

没有成功。

我们如何更改 src 属性以具有相对路径?

假设以下 HTML:

<body>
    <img border=0 alt="pic 2" src="file:///D:/Projects/Test/IMAGES/img_1.GIF">
    <p>Hello World</p>
</body>

假设这已被加载到名为WebBrowser1的TWebBrowser组件实例中,

使用 SetAttribute 而不是 outerHTML,如下所示:

var
  Body    : IHTMLElement;
  Children: IHTMLElementCollection;
  Element : IHTMLElement;
begin
  Body := (WebBrowser1.Document as IHTMLDocument2).body;
  Children := Body.children as IHTMLElementCollection;
  Element := Children.item( 0, 0 ) as IHTMLElement;
  Element.setAttribute( 'src', './img_1.GIF', 0 );
  // To prove a point:
  ShowMessage( Element.outerHTML );
end;

最新更新