日本でも Amazon Cound Reader が始まったおかげで、ついに Windows で Kindle 本が読めるようになりつつあります。素晴らしいですね。
でも、僕らの Windows Phone で開くと...一部しか表示されません。
たぶんこんな指定があるからでしょうか?
<meta name="viewport" content="user-scalable=no, width=device-width, maximum-scale=1.0, minimum-scale=1.0">
レイアウト崩さないようにするには仕方ないんでしょうけど困りますね。
Viewbox で囲んでみる
そっちが変えさせてくれないなら こんな感じに WebView を Viewbox で囲んでやると...
<Viewbox> <WebView x:Name="WebView" Height="1280" Width="800" /> </Viewbox>
public MainPage() { this.InitializeComponent(); this.NavigationCacheMode = NavigationCacheMode.Required; this.Loaded += (s, e) => { this.WebView.Navigate(new Uri("http://read.amazon.co.jp")); }; }
ダメかー
WebView は強制的にモバイル用サイトで表示されるんですね。
WebView の User-Agent を変更する
で、いろいろ探した結果がこちら
UrlMkSetSessionOption を使うと現在のインターネット接続のオプションを変更することができるようです。
早速、書いてあるコードをコピペして IE11 デスクトップモードの User-Agent を指定しました。
using System; using System.Runtime.InteropServices; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; namespace App11 { public sealed partial class MainPage : Page { [DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved); const int URLMON_OPTION_USERAGENT = 0x10000001; public void ChangeUserAgent(string Agent) { UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0); } public MainPage() { this.InitializeComponent(); this.NavigationCacheMode = NavigationCacheMode.Required; this.Loaded += (s, e) => { ChangeUserAgent("Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko"); this.WebView.Navigate(new Uri("http://read.amazon.co.jp")); }; }
どうよ?
でも、現状ログイン後がダメです… なんとかならないかな。
追記
ダメなんだそうです...
かずあきさんへ、今日同じこと試しましたが WebView は AppCache 未対応なのでダメでした。しばやんより
— しばやん (@shibayan) 2014, 9月 21