2011-01-06 4 views
0

특정 웹 페이지에서 모든 링크를 추출해야하는 코드 조각을 만들고 있습니다. 임베디드 WB 구성 요소를 사용하기 때문에 현재 페이지도 표시해야합니다. EmbeddedWB에로드 된 간단한 페이지가 있고 JavaScript의 "document.write"함수를 사용하여 URL을 생성하는 일부 스크립트가 들어 있습니다.델파이에서 생성 된 JavaScript 추출 링크

<html> 
<body> 
<a href=#>No problem Here<a/> 
<script Language="JavaScript"> 
var random=Math.floor(Math.random()*11); 
document.write("<a href=\"index"+random+".html\"> I Can’t catch this link! </a>"); 
</script> 
</body> 
</html> 

기능을 ViewPageLinksToStrings를 사용하여 : 이론적으로이 같은 일이 (LinksList : TStrings를)를 내가 으려고 구성 요소를 예상 URL의 소스 코드에서 발견,하지만 내 의도는 링크를 잡으려고하는 것입니다 JavaScript로도 생성됩니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 사용할 수있는 라이브러리가 있습니까?

감사합니다. John Marko

+1

다른 웹 브라우저 할 수있는 "쇼 페이지 소스": 여기 단순화 유형 IHTMLDocument2에의 변수로 전체 (자바 스크립트 생성) DOM 트리를 읽고 코드가 포함되어 있습니다. 특정 브라우저를 잊어 버렸지 만, 적어도 하나의 '최종'소스, 즉 js 자체가 아닌 자바 스크립트가 무엇인지 보여줍니다. 그러한 브라우저를 임베드하면 도움이 될 것입니다 ... 또는 DOM을 걷어 링크를 찾으면 어떨까요? DOM에는 JS가 생성 한 링크를 포함하여 모든 링크가 있어야합니다. –

답변

1

EmbeddedWB가 Javascript를 지원하는 것으로 보입니다. 포럼에서 this article을 발견했습니다. 이 점에서 다른

procedure MyProcedure(Sender: TObject); 
var 
    Doc: IHTMLDocument2; 
begin 
    EmbeddedWB1.Navigate('... some url ...'); 
    while EmbeddedWB1.ReadyState < READYSTATE_INTERACTIVE do 
    Application.ProcessMessages; 

    Doc := EmbeddedWB1.Document as IHTMLDocument2; 
    ... 
관련 문제