ユーザーがウィキペディアを検索できるようにするアプリケーションに組み込まれたシンプルな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の設定で他のすべてのページを無効にすることも解決策ではありません(これらのアドレスは変更されるため、単にすべてのページを許可することは困難です。予想)。