2012-08-23 4 views
2

나는 C# winforms 앱에서 Awesomium을 사용하여 웹 페이지의 div를 클릭합니다. 직접 구글 크롬에 입력하면div를 클릭하여 awesomium에서 javascript를 실행합니다.

는 다음 스크립트는 잘 작동합니다 :

javascript: document.getElementById('ac_play').click(); 

을하지만 난 때 사용 awesomium에서 그것을 실행하기 위해 다음 중 하나를

webControl1.ExecuteJavascript("document.getElementById('ac_play').click();"); 

나이 :

webControl1.LoadURL("javascript: document.getElementById('ac_play').click();"); 

작동하지 않습니다. 어떤 생각을하게합니까? Awesomium은 "div 클릭"을 지원합니까? 아니면 왜 작동하지 않는 또 다른 이유가 있을까요? 수동으로 "addressBox1"의 스크립트를 입력하여 (기본 awesomium을 "LoadCompleted 이벤트에

  • 은 (페이지가 완전히로드되었는지 확인하기 위해)
  • :

    은 또한 코드를 실행하려고했습니다 주소 표시 줄 "컨트롤)

평소와 같이 - 아무 효과가 없습니다.

편집 :

내가 GeckoFX에서 같은 자바 스크립트를 테스트했는데이 중 .. 어떤 해결 방법이 작동하지 않습니다?

EDIT2

의 standart WebBrowser 컨트롤은 완벽하게 스크립트를 실행! (비록 그것이 IE5 정도를 사용하고 있지만 그것이 Awesomium 솔루션이 작동하는 것을보고 싶습니다.)

P. 내가 그것을 다시 어떻게 ( PPS 내가 IE의 캐시를 제거하지만 표준 웹 브라우저를 사용하는 sooo를 신뢰할 수없는입니다 ..

+0

geckofx의 버전/파이어 폭스는 당신이 시도 않았다 LoadedDocumentReadyStateDocumentReady 이벤트를 기다릴 필요가? – Tom

+0

최신 [Awesomium 1.7 RC] (http://awesomium.com/download/)로 업그레이드 해 보셨습니까? API가 크게 변경되지만 문제가 해결 될 수도 있습니다. 버전 1.7에서는 DOM을 조작하고 HTML DOM 객체에 액세스 할 수 있습니다. 1.7을 사용했다면, 어떻게해야하는지에 대한 대안적인 예를 드릴 수 있습니다. –

+0

은 1.7RC3을 방금 시도했습니다. HTML DOM에 액세스 할 수 없으며 javascript를 실행하는 것 외에는 HTML 요소가있는 작업도 수행하지 않습니다. 그것은 간단한 작업으로 페이지의 HTML을 문자열로 저장하는 것조차 지원하지 않습니다 ... http://stackoverflow.com/questions/14761334/interacting-with-awesominum-webcontrol/14761555#comment20662646_14761555 – Alex

답변

0
public void JsFireEvent(string getElementQuery, string eventName) 
{ 
    webControl1.ExecuteJavascript(@" 
         function fireEvent(element,event) { 
          var evt = document.createEvent('HTMLEvents'); 
          evt.initEvent(event, true, true); // event type,bubbling,cancelable 
          element.dispatchEvent(evt);         
         } 
         " + String.Format("fireEvent({0}, '{1}');", getElementQuery, eventName)); 
} 

JsFireEvent("document.getElementById('ac_play')", "click"); 

Link

1

당신이 기억, 그것은 webcontrol에서 일하고 지금은 아니다? (- 다음 Awesomium 아직 아직 준비되지 않기 때문에하지 Ready)

private void WebControl_DocumentReady(object sender, DocumentReadyEventArgs e) 
{ 
    if (e.ReadyState != DocumentReadyState.Loaded) return; 
    //Here ExecuteJavascript should work 
} 
관련 문제