WebBrowserコントロールを使ってみよう
|WebBrowserコントロールはWebサイトを表示するためのコントロールです。
このコントロールを使用することで簡単に任意のURLのWebサイトを表示させることができます。
またこの記事ではWebBrowserコントロールでJavaScriptを動作させるための方法も紹介します。
詳細は以下から。
WebBrowserコントロールを配置してみよう
WebBrowserコントロールはxamlを使用して簡単に配置することができます。
注意点として、Name属性を必ず指定しないと正常に動作しません。
下記はWebBrowserコントロールをxamlに配置したサンプルです。
[アプリ名].xaml
<!--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
<!--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コントロールで表示させるサンプルです。
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を動作できるようにするサンプルです。
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のトップページを表示させてみましょう。
下記のように読み込み中であった部分が正常に読み込まれます。