WebBrowserコントロールを使ってみよう
|WebBrowserコントロールはWebサイトを表示するためのコントロールです。
このコントロールを使用することで簡単に任意のURLのWebサイトを表示させることができます。
またこの記事ではWebBrowserコントロールでJavaScriptを動作させるための方法も紹介します。
詳細は以下から。
WebBrowserコントロールを配置してみよう
WebBrowserコントロールはxamlを使用して簡単に配置することができます。
注意点として、Name属性を必ず指定しないと正常に動作しません。
下記はWebBrowserコントロールをxamlに配置したサンプルです。
[アプリ名].xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!--LayoutRoot は、すべてのページ コンテンツが配置されるルート グリッドです--> <Grid x:Name= "LayoutRoot" Background= "Transparent" > <Grid.RowDefinitions> <RowDefinition Height= "Auto" /> <RowDefinition Height= "*" /> </Grid.RowDefinitions> <!--TitlePanel は、アプリケーション名とページ タイトルを格納します--> <StackPanel x:Name= "TitlePanel" Grid.Row= "0" Margin= "12,17,0,28" > <TextBlock x:Name= "ApplicationTitle" Text= "マイ アプリケーション" Style= "{StaticResource PhoneTextNormalStyle}" /> <TextBlock x:Name= "PageTitle" Text= "ページ名" Margin= "9,-7,0,0" Style= "{StaticResource PhoneTextTitle1Style}" /> </StackPanel> <!--ContentPanel - 追加コンテンツをここに入力します--> <Grid x:Name= "ContentPanel" Grid.Row= "1" Margin= "12,0,12,0" > <phone:WebBrowser HorizontalAlignment= "Left" Margin= "6,6,0,0" Name= "webBrowser1" VerticalAlignment= "Top" Height= "514" Width= "444" /> </Grid> </Grid> |
15行目~16行目でWebBrowserコントロールを配置しています。
任意のURLのWebページを表示させてみよう
配置が完了したら、今度はWebサイトを表示させてみましょう。
下図のようにTextBoxに入力したURLをWebBrowserコントロールで表示されるサンプルを作成してみましょう。
まずはWebサイトのURLを入力するTextBoxと表示させるアクションを行うためのButtonを追加します。
[アプリ名].xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!--LayoutRoot は、すべてのページ コンテンツが配置されるルート グリッドです--> <Grid x:Name= "LayoutRoot" Background= "Transparent" > <Grid.RowDefinitions> <RowDefinition Height= "Auto" /> <RowDefinition Height= "*" /> </Grid.RowDefinitions> <!--TitlePanel は、アプリケーション名とページ タイトルを格納します--> <StackPanel x:Name= "TitlePanel" Grid.Row= "0" Margin= "12,17,0,28" > <TextBlock x:Name= "ApplicationTitle" Text= "マイ アプリケーション" Style= "{StaticResource PhoneTextNormalStyle}" /> <TextBlock x:Name= "PageTitle" Text= "ページ名" Margin= "9,-7,0,0" Style= "{StaticResource PhoneTextTitle1Style}" /> </StackPanel> <!--ContentPanel - 追加コンテンツをここに入力します--> <Grid x:Name= "ContentPanel" Grid.Row= "1" Margin= "15,183,9,12" > <Grid.ColumnDefinitions> <ColumnDefinition Width= "239*" /> <ColumnDefinition Width= "217*" /> </Grid.ColumnDefinitions> <phone:WebBrowser HorizontalAlignment= "Left" Margin= "6,6,0,0" Name= "webBrowser1" VerticalAlignment= "Top" Height= "514" Width= "444" Grid.ColumnSpan= "2" /> </Grid> <TextBox Grid.RowSpan= "2" Height= "73" HorizontalAlignment= "Left" Margin= "0,139,0,0" Name= "textBox1" Text= "" VerticalAlignment= "Top" Width= "460" /> <Button Content= "表示" Grid.Row= "1" Height= "72" HorizontalAlignment= "Left" Margin= "145,57,0,0" Name= "button1" VerticalAlignment= "Top" Width= "160" Click= "button1_Click" /> </Grid> |
22行目でTextBoxを、23行目でButtonを追加しています。
また、ButtonにはClickイベント発生時にbutton1_Clickというメソッドが実行されるようにClick属性を設定しています。
次はbutton1_Clickメソッドの中身を実装していきましょう。
下記はTextBoxに入力されたUrlをWebBrowserコントロールで表示させるサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public partial class MainPage : PhoneApplicationPage { // コンストラクター public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { string site = textBox1.Text; webBrowser1.Navigate( new Uri(site, UriKind.Absolute)); } } |
12行目にてWebBrowserコントロールのNavigateメソッドを使用して入力されたURLのWebサイトを表示させています。
引数にはUriクラスのオブジェクトを指定します。
試しにhttps://techbooster.orgと入力してButtonを押下すると以下のような画面が表示されます。
JavaScriptを動作させる
ここまでで、Webサイトを表示することができましたが、この状態ではJavaScriptが動作しません。
techboosterのトップページを表示させてみるとよくわかると思いますが、真ん中の部分が読み込み中のままとなっています。
JavaScriptを動作させたい場合はWebBrowserコントロールのIsScriptEnabledプロパティにtrueを設定する必要があります。
このプロパティのデフォルト値はfalseとなっているため、JavaScriptが動作しません。
下記は画面読み込み時にIsScriptEnabledプロパティの値をtrueにし、JavaScriptを動作できるようにするサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public partial class MainPage : PhoneApplicationPage { // コンストラクター public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { string site = textBox1.Text; webBrowser1.Navigate( new Uri(site, UriKind.Absolute)); } private void LayoutRoot_Loaded(object sender, RoutedEventArgs e) { webBrowser1.IsScriptEnabled = true ; } } |
17行目にて、IsScriptEnabledプロパティの値をtrueにして、JavaScriptが動作するようにしています。
ではもう一度techboosterのトップページを表示させてみましょう。
下記のように読み込み中であった部分が正常に読み込まれます。