2010-12-12 3 views
0

GeckoFX DOM 요소를 JavaScript 탐색 호출에 전달

GeckoFX 웹 브라우저를 사용하는 경우 GeckoElement를 다음과 같이 JavaScript를 통해 전달할 수 있습니까?

WebBrowser.Navigate("javascript:void("+ele.DomObject+".onclick())"); 

JavaScript를 통해 DOM 요소를 선택합니다 (이 작동은 괜찮음) atm이지만 C# 요소가 있습니다.

답변

1

불행히도 요소는 그런 자바 스크립트에 전달할 수 없습니다.

그러나 WebBrowser.Navigate 호출은 불필요하며 페이지 변수가 불필요하게 손실됩니다.

완성을 위해 필자는 자바 스크립트를 삽입 한 다음 해당 버튼을 탐색 할 필요없이 button.click() 핸들러를 통해 자동화 된 버튼 클릭으로 호출하는 스 니펫을 게시했습니다. 브라우저를 실행하십시오.

DOM.GeckoScriptElement script = Document.CreateElement("script").AsScriptElement(); 
script.Type = "text/javascript"; 
script.Text = "function doAlert(){ alert('My alert - fired by automating a button click on the [Automated Button]'); }"; 
Document.Body.AppendChild(script); 

script = Document.CreateElement("script").AsScriptElement(); 
script.Type = "text/javascript"; 
script.Text = "function callDoAlert(id){ var el = document.getElementById(id); el.click(); }"; 
Document.Body.AppendChild(script); 

DOM.GeckoInputElement button = Document.CreateElement("input").AsInputElement(); 
button.Type = "button"; 
button.Id = "myButton"; 
button.Value = "Automated Button"; 
button.SetAttribute("onclick", "javascript:doAlert();"); 

Document.Body.AppendChild(button); 

DOM.GeckoInputElement button2 = Document.CreateElement("input").AsInputElement(); 
button2.Type = "button"; 
button2.Id = "myOtherButton"; 
button2.Value = "Press Me"; 
button2.SetAttribute("onclick", "javascript:document.getElementById('myButton').click();"); 

Document.Body.AppendChild(button2); 

//uncomment to fully automate without the <webbrowser>.Navigate("javascript:.."); hack 
//button2.click(); 

나는 그것이

보다 더 나은 방향을 가리 킵니다 확신이 코드는 컨트롤의 GFXe 빌드를 사용하는 방법에 주로 초점을 맞춘 것에 따라, 직접 당신을 도울 것입니다 모르겠지만

WebBrowser.Navigate ("javascript : hack.goesHere()"); 장난.

+1

사악한. 저는 현재 선택된 GeckoFX DOM을 JS 친숙한 walkable DOM으로 캐스팅하려고합니다.이 방법은 내가 사용해온 탐색 해킹보다 훨씬 낫습니다. 나는이 방법을 시험해야 할 것이다, 감사 스캇. – brokkc

0

다음으로이 작업을 수행 할 수 있습니다

WebBrowser.Navigate("javascript:void(document.getElementById('"+button.Id+"').click())");