2017-02-11 5 views
-1

私たちはTWebBrowserを使用してHTML文書を作成し、その本体のみをSQLデータベースに格納するDelphiXEプログラムを持っています。相対パスのみを持つようにsrc属性を変更する方法は?

イメージをドキュメントに追加します。 我々はsrc属性で、イメージを追加すると、我々は

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

D持っている:/プロジェクト/テストプログラムのとHTMLファイルの場所です。

我々はそれが我々がベースを設定し、同じ

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

まま、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属性が変更されません。メモ帳でHTMLファイルのdirを

<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コンポーネントインスタンスにロードされていると仮定して、代わりにouterHTMLの

使用SetAttributeのは、次のように:

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; 
関連する問題