2012-09-13 20 views
5

Webブラウザコントロールを使用してVS 2010 C#でWindows Formsアプリケーションを開発しています。 私の目標はこのウェブサイトでのナビゲーションを自動化することですが、ある時点では、OKボタンを押すまでオートメーションを停止するjavascriptアラートがウェブサイトにポップアップ表示されます。 私はちょっとポップアップしたときにエンタープレスをシミュレートすることで問題を解決しましたが、アプリケーションはそれが機能するようにフォーカスを当て続けるべきです。 私の質問は、このカスタムjavascriptの警告をウェブサイトから削除する方法はありますか(私はクライアント側からそれを殺すことはできません)、この問題を解決する方法は他にありますか? 表示されるjavascriptアラート(messagebox)はエラーではありません。何らかの理由で、そのウェブサイトのプログラマーがそこに置くというJavaScriptの警告です。WebBrowserコントロールはウェブサイトからのJavaScriptの警告を停止します

+1

少しのグーグルが見つかりました:http://josheinstein.com/blog/index.php/2010/01/webbrowser-control-prevent-window-alert/ –

答えて

0

Navigatedイベントを消費して、DocumentTextを傍受してから、alert(...);の参照を削除することができます。

MSDN上Navigatedページから:

WebBrowserコントロールが新しいドキュメントにナビゲートしたときに通知を受け取るためにNavigatedイベントを処理します。 Navigatedイベントが発生すると、新しいドキュメントがロードされ始めます。つまり、Document,DocumentText、およびDocumentStreamのプロパティを使用して、ロードされたコンテンツにアクセスできます。

ここにいくつかのコードです:

using System.Windows.Forms; 
using System.Text.RegularExpressions; 

namespace Your.App 
{ 
    public class PopupSuppress 
    { 
     WebBrowser _wb; 
     public PopupSupress() 
     { 
      _wb = new WebBrowser(); 
      _wb.Navigated += new WebBrowserNavigatedEventHandler(_wb_Navigated); 
     } 

     void _wb_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
     { 
      string alertRegexPattern = "alert\\([\\s\\S]*\\);"; 
      //make sure to only write to _wb.DocumentText if there is a change. 
      //This will prompt a reloading of the page (and another 'Navigated' event) [see MSDN link] 
      if(Regex.IsMatch(_wb.DocumentText, alertRegexPattern)) 
       _wb.DocumentText = Regex.Replace(_wb.DocumentText, alertRegexPattern, string.Empty); 
     } 
    } 
} 

出典/参考:

関連する問題