2017-02-11 71 views
-1

我们有一个DelphiXE程序,它使用TWebBrowser创建HTML文档,并且只将它们的物体存储在sql数据库中。我们如何才能将src属性更改为只有相对路径?

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

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

d:/项目/测试的程序和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属性使其具有相对路径?

+2

“但我们做出任何改变“:你究竟是如何做出你正在询问的改变?这个q需要一个MCVE(http://stackoverflow.com/help/mcve)读者不应该猜测这种细节。 – MartynA

+1

在这种情况下,你的代码应该在q中,而不是在注释中。请编辑你的q。 – MartynA

回答

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; 
相关问题