2012-09-28 3 views
3

javascript를 사용하여 일부 설정이 변경된 Webrowser가 있습니다. 나는 예를 here를 사용하기 위해 노력하고있어하지만 올바른 구문 스크립트 내가 성공하지WebBrowser InvokeScript

this.webBrowser1.InvokeScript("setdisplayType"); 
this.webBrowser1.InvokeScript("setdisplayType('decimal')"); 
this.webBrowser1.InvokeScript("setdisplayType","decimal"); 
+0

을 정의를? 당신은 아무 데서도 그것을 보여주지 않습니다. – aquinas

+0

다양한 'InvokeScript' 호출을 실행하면 어떻게됩니까? 오류가 발생 했습니까? 아무 일도 일어나지 않습니까? –

+0

표시된 오류는 '알 수없는 이름입니다. (HRESULT에서 예외 : 0x80020006 (DISP_E_UNKNOWNNAME))'. 아마도 InvokeScript 기능을 오해 했나요? 이미 WPF 웹 브라우저에로드 된 페이지의 라디오 단추를 클릭하려고합니다. – user3357963

답변

7

이러한 시도했습니다 지금까지

 <div class="DisplayInput"><input type="radio" name="displaytype" 
value="decimal" onclick="setdisplayType('decimal');" checked="checked"><a 
    href="javaScript:setdisplayType('decimal');" 
    onclick="s_objectID=&quot;javascript:setdisplayType('decimal');_1&quot;;return this.s_oc?  this.s_oc(e):true">Decimal</a></div> 

과 같은

를 얻을 수 없다 응용 프로그램의 오류가 무엇인지 알지 못하며 심지어 setdisplayType이 무엇인지 알지 못하는 사이에로드되기 전에 함수 setdisplayType을 호출하려고합니다. MSDN 설명서 당 ... InvokeScript

(문자열, 객체()) 호출 할 수 없습니다 전에로드가 완료 구현하는 문서. LoadCompleted 이벤트를 처리하여 문서로드가 완료되면 감지 할 수 있습니다.

아마 LoadCompleted 이벤트 처리기를 구현 한 다음 스크립트를 호출 할 수 있습니다.

희망이 도움이됩니다.

+0

로드가 완료되었으므로 LoadCompleted 이벤트에 이미 있습니다. 함수 이름과 인수를 전달하는 데 사용하는 잘못된 구문이라고 생각합니다. – user3357963

1

두 번째 매개 변수로 Object 배열을 전달해야합니다. 당신은 그것을 이런 식으로 수행 할 수 있습니다

Object[] parameters = new Object[1]; //assuming your JS function has one parameter 
parameters[0] = (Object)"yourStringParameter"; //for example the parameter is a string 
yourBrowser.Document.InvokeScript("scriptName", parameters); 
0

이 시도 : 함수의 setdisplayType이

private async void web_LoadCompleted(object sender, NavigationEventArgs e) 
{ 
    Object[] parameters = new Object[1]; 
    await yourBrowser.Document.InvokeScript("scriptName", parameters); 
}