Webブラウザコントロールを使用してVS2010C#でWindowsフォームアプリケーションを開発しています。私の目標は、このWebサイトでのナビゲーションを自動化することですが、ある時点でWebサイトにJavaScriptアラートがポップアップ表示され、[OK]ボタンを押すまで自動化が停止します。ポップアップしたときにEnterプレスをシミュレートすることで問題を解決しましたが、アプリケーションを機能させるには、アプリケーションに焦点を合わせたままにする必要があります。私の質問は、ウェブサイトからこのカスタムjavascriptアラートを強制終了する方法はありますか(私はサイドにアクセスできません、クライアント側から強制終了します)、それが表示されないようにするか、この問題を修正する他の方法はありますか?表示されるjavascriptアラート(メッセージボックス)はエラーではなく、そのWebサイトのプログラマーが何らかの理由でそこに置いたjavascriptアラートです。
質問する
2242 次
1 に答える
0
イベントを消費し、ページをロードする前に をNavigated
インターセプトして、参照を削除することができます。DocumentText
alert(...);
MSDNのNavigated
ページから:
コントロールが新しいドキュメントに移動した
Navigated
ときに通知を受け取るイベントを処理します。WebBrowser
イベントが発生すると、新しいドキュメントの読み込みが開始されます。これは、 、、およびプロパティ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);
}
}
}
ソース/リソース:
- http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.navigated.aspx
- http://regexpal.com/
- (申し訳ありませんが、もっとありましたが、2つのリンクしか投稿できません)
于 2012-09-18T19:00:46.443 に答える