2

그래, 아주 실망한 문제가 있습니다. 나는 웹 페이지를 파싱하고 내가 원하는 정보를 얻기 위해 자바 스크립트를 실행할 필요가있다.Windows.Forms.Webbrowser.Navigate()를 사용할 때 Javascript 팝업을 사용하지 않음

Form f = new Form(); 
WebBrowser w = new WebBrowser(); 
w.Navigate(url); 
f.Controls.Add(w); 
f.ShowDialog(); 
HtmlElementCollection hc = w.Document.GetElementsByTagName("button"); 

이 작동하고 I 버튼 요소를 잘 얻을 수 있어요,하지만 난이 운영하는 팝업 매번 얻을. 매우 짜증나. 팝업은 자바 스크립트 기반이며 버튼 요소 정보를 얻으려면 Javascript를 실행해야합니다. 다음은 팝업 스크립트입니다.

<script> 
var evilPopup = (getCookieVar("markOpen","PromoPop") == 1); 
if (evilPopup != 1) 
{ 
    PromoPop = window.open('/browse/info.aspx?cid=36193','Advertisement', 'width=365,height=262,screenX=100,screenY=100'); 

if (PromoPop) 
    { 
     PromoPop.blur(); 
     window.focus(); 
     setCookieVar("markOpen","PromoPop","1");    
    } 
} 
</script> 

나는 아마도 Forms.Webbrowser 컨트롤에 쿠키를 추가 베인에 시도했지만 좌절했고 포기했다. NoAllowNavagate 속성을 설정하려고 시도했지만 다른 모든 것은 유용하지 않습니다.

아무도 도와 줄 수 있습니까? 또한 양식을 열지 않고도 Console.App에서 DomDocument 정보를 얻을 수있는 방법이 있습니까?

감사

답변

6

WebBrowser 구성 요소에는 CancelEventArgs가있는 NewWindow 이벤트가 있습니다. 자바 스크립트는 이벤트가 트리거됩니다 팝업 창을 열려고하고 취소

: 그래서 그냥 비슷한 처리기를 추가합니다.

+1

와우, 지금 당장 시험해 보겠습니다. 이것은 매우 유망 해 보입니다. 좋아요, 이제 막 15 번 테스트 해 보았습니다. 내 마음 속의 특별한 장소가 지금 당신을 위해 친절한 낯선 사람을 위해 예약되었습니다. –

0

문서에 자바 스크립트를 삽입 할 수 있나요? 다음을 추가 할 수 있습니다.

window.open = function() { return false; } 
+0

정말 절름발이입니다. 네가 자바 스크립트를 주입 할 수 있다는 것도 몰랐다. 그렇다면 지금 가고있는 길을 갈 필요조차 없습니다. 귀하의 의견에 감사드립니다, 나는 그것에 대해 살펴 보겠습니다. –

0

WebClient를 사용하여 HTML을 임시 파일로 다운로드하고 광고 스크립트를 string.Empty로 바꾸고 컨트롤에서 파일을로드하는 것이 빠르고 간단합니다.

+0

나는이 접근 방식을 시도했는데 이후에 Stream에서 html을로드하려고 시도했지만 행운이 없었습니다. 나는 WebClient를 더 공부해야한다는 것을 모른다. HttpWebRequest/WebResponse를 사용하여 언급 한 것을 시도했다. 감사 –

0

SHDocVw.dll을 사용하면 자동으로 새 창을 잡아야합니다. 이 자바 스크립트에 관해서

 private SHDocVw.WebBrowser_V1 Web_V1; 

     // write it on form load event 

     Web_V1 = (SHDocVw.WebBrowser_V1)this.webBrowser1.ActiveXInstance; 

     Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(Web_V1_NewWindow); 


     private void Web_V1_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed) 
     { 
      Processed = true; //Stop event from being processed 

      //Code to open in same window 
      //this.webBrowser1.Navigate(URL); 

      //Code to open in new window instead of same window 
      frmEBeyanname Popup = new frmEBeyanname(); 
      Popup.webBrowser1.Navigate(URL); 
      Popup.Show(); 
     } 

안녕