2

私は非常に不満な問題があります。私はWebページを解析していて、必要な情報を得るためにjavascriptを実行する必要があります。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"); 

これは機能し、ボタンの要素をうまく取得できますが、これを実行するたびにポップアップが表示されます。とてもうるさい。ポップアップはjavascriptベースで、ボタンの要素情報を取得するには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コントロールにCookieを追加しようとしましたが、欲求不満になり、あきらめました。私はNoAllowNavagateプロパティを設定しようとしました。

誰でも手助けできますか?また、フォームを開くことなく、Console.AppからDomDocument情報を取得する方法がありますか?

ありがとうございました

答えて

6

WebBrowserコンポーネントには、CancelEventArgsを持つNewWindowイベントがあります。 JavaScriptのイベントがトリガされますポップアップウィンドウを開こうとし、それをキャンセル

:だからと類似のハンドラを追加します。

+1

うわー、私は今これを試してみるつもりです。これは非常に有望に見え、それに "邪魔"要因があります。 さて、私は15回試してみました。私の心の特別な場所は、今あなたのために見知らぬ人のために予約されています。 –

0

ドキュメントにJavascriptを挿入できますか?これを追加することができます:

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

私は本当にラメです。私はあなたがJavascriptを注入できることも気付かなかった。それが事実なら、私は今行く道を行く必要はないかもしれません。あなたのコメントをありがとう、私はそれを見ていきます。 –

0

WebClientを使用してHTMLを一時ファイルにダウンロードし、広告スクリプトをstring.Emptyに置き換えて、コントロール内のファイルを読み込む方法があります。

+0

私はこのアプローチを試みました。私はStreamでhtmlを読み込もうとしましたが、それでも運がなかったと思います。私はさらにWebClientを勉強しなければならないかどうか分かりません.HttpWebRequest/WebResponseを使って言いましたようにしました。ありがとう –

0

新しいウィンドウを自動的に取得するにはSHDocVw.dllを試してください。それはJavascriptに来るとき

 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(); 
     } 

さようなら

関連する問題