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

How we can change src attribute to have there only relative paths?

我们有一个 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 属性以使其具有相对路径?

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