だらだらやるよ。

こげつのIT技術メモ

Windows Phone 7のブラウザコントロールで戻るを実装する方法。

最近ちょこちょことWP7触ってみてるんですよ。
開発環境無料だし、id:iseebiとかid:tmytとかid:ch3cooh393とかあたりが楽しそうだったので。
とはいえプログラム言語自体は手になじんでるのでWPFまわりとコントロール回りの確認が主なところかな。
アプリ作るなら先にiPhoneでなんかやりたいなーと思ってます。


そんで今日の本題。
最近はiPhoneアプリもそうなんだけど、割と外部の情報表示するのにブラウザコントロール使うことが多いんですよね。
ただWP7のブラウザコントロールって戻る実装がないんですよ。
PC用だったらこんな感じなんですけどね

webBrowser1.GoBack();


そんでまあなんかいろんな人が困ってるっぽいことを聞いてて
そんなゴミのようなコントロール存在するわけないだろとか思ってちょっと調べたら解決しました。
InvokeScriptメソッドを使います。

webBrowser1.InvokeScript("eval","history.go(-1)");

これで解決!しません。
どうやらWP7用のWebBrowserコントロールJavaScriptが動かないらしいですね。
で、プロパティ見てたら謎のプロパティがありました。
IsScriptEnabledプロパティをtrueに変更する必要があります。
デザイナでもコードでも変更したらいいんじゃないかな。
ちなみにこのプロパティはwindows phone 7専用のプロパティみたいです。
WebBrowser.IsScriptEnabled Property (Microsoft.Phone.Controls)

webBrowser1.IsScriptEnabled = true;
webBrowser1.InvokeScript("eval","history.go(-1)");

と、こんな感じでめでたしめでたし。


後聞いた話だとtarget="_blank" がうまく動かないって聞いてるけど、これもそのうち気が向いたら調べてみよう。