我们如何才能改变src属性只有相对路径?

时间:2017-02-11 18:15:48

标签: image delphi twebbrowser

我们有一个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:\Projects\Test\">

没有成功。

我们如何更改src属性以获得相对路径?

1 个答案:

答案 0 :(得分:1)

假设以下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;