3

ユーザーがウィキペディアを検索できるようにするアプリケーションに組み込まれたシンプルなWebブラウザーがあり、ユーザーがウィキペディア外の他のWebサイトを閲覧できないようにしようとしています(外部リンクをクリックして参照を参照するなど)。現在、私はこの単純なコードを使用しています:

this.textBoxAddress.Text = this.webBrowser.Url.ToString();
if (this.webBrowser.Url.Host != "en.wikipedia.org")
{
    this.webBrowser.Visible = false;
    this.labelErrorMessage.Visible = true;
}
else
{
    this.webBrowser.Visible = true;
    this.labelErrorMessage.Visible = false;
}

このコードは機能しますが、ページの実行時にページが既に読み込まれている場合を除きます。このコードを_Navigatingイベントに入れて、ページが読み込まれる前Urlにユーザーを先制的に停止しようとすると、ページが読み込まれるまでWebブラウザーコントロールがプロパティを更新しないため、失敗します。

このコードが気に入らない理由は、呼び出されたときにページが既に読み込まれているため、Webページが表示されなくても、そのページのエラー(たとえば、ポップアップを表示するスクリプトエラー)が表示されるためです。

さまざまな理由でWebBrowserコントロールを使用しないという情報源を読んだことがありますが、この場合、セキュリティは大きな問題ではありません。また、このアプリケーションは文字通り1人のユーザーしかいない社内アプリケーションであり、セキュリティをバイパスしないため、エンドユーザーが何かをすることを心配する必要はありません。

このユーザーは他のサーフィンにIEを利用し、この組織のイントラネットサイトもIEで実行されるため、IEの設定で他のすべてのページを無効にすることも解決策ではありません(これらのアドレスは変更されるため、単にすべてのページを許可することは困難です。予想)。

4

3 に答える 3

10

イベントにサブスクライブしWebBrowser.Navigatingます。WebBrowserNavigatingEventArgs.Urlプロパティを確認し、WebBrowserNavigatingEventArgs.Cancel=truewikipedia でない場合は設定します。

于 2012-06-21T13:47:40.647 に答える
0

これが役立つことを願っていますhttp://msdn.microsoft.com/en-us/library/system.windows.navigation.navigatingcanceleventargs

于 2012-06-21T13:51:56.597 に答える
-1

これはあなたに役立つかもしれないと思います。WebBrowser.Document プロパティを使用してリンクを検索し、リンクをループして、必要なリンクのナビゲーションを無効にします。 http://programsolution.blogspot.com/2008/01/how-disable-link-navigation-in.html

于 2012-06-21T13:53:08.427 に答える