2017-02-11 8 views
-1

우리는 TWebBrowser를 사용하여 HTML 문서를 생성하고 본문 만 SQL 데이터베이스에 저장하는 DelphiXE 프로그램을 가지고 있습니다.상대 경로 만 가질 수 있도록 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 구성 요소 인스턴스에로드 된 가정하면, 대신 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;