2017-11-07 11 views
1

Dotnetbrowser 1.11을 사용하여 iframe 문서 내에있는 javascript를 실행하려고합니다.iframe 문서 내부에서 자바 스크립트 실행

다음 코드에서 returnValue.IsFunction()은 false를 반환합니다.

JSValue returnValue = browser.ExecuteJavaScriptAndReturnValue (FunctionName);

경우 (returnValue.IsFunction) {// 뭔가} 스크립트가 현재로드 된 문서의 경우

ExecuteJavaScript가 잘 작동합니다. 그러나 스크립트가 현재로드 된 문서 내부의 iframe 문서에로드 될 때 동일한 스크립트가 발견되지 않습니다.

동일하게 도와주세요.

답변

2

ExecuteJavaScriptAndReturnValue() 메서드에는 id 번호를 사용하여 특정 프레임에서 JavaScript 코드를 실행할 수있는 재정의가 있습니다. 현재로드 된 문서에서 하위 프레임 ID 목록을 가져 오려면 Browser.GetFramesIds() 메소드를 사용할 수 있습니다. 다음 코드 예제는 다음과 같습니다

browser.FinishLoadingFrameEvent += (s, e) => 
{ 
    if (e.IsMainFrame) 
    { 
     List<long> framesIds = e.Browser.GetFramesIds(); 
     JSValue returnValue = 
      e.Browser.ExecuteJavaScriptAndReturnValue(framesIds.First(), FunctionName); 

     if (returnValue.IsFunction){//something} 
    } 
}; 

는 Browser.GetFramesIds()가 완전히 페이지 로딩 후 사용해야합니다 고려, 어느 목록은 이미로드 ID를 포함합니다.