Windows 8 アプリで Webview のユーザー エージェントを変更しようとしています。現時点では、私は現在これを行っています:
[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;
次に、たとえば UA を iPhone に変更する必要がある場合:
string ua = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X)" +
"AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);
これは完全に機能します。残念ながら、このアプリを Windows ストアに提出する場合、UrlMkSetSessionOptionは Windows 8 アプリで正式にサポートされていないため、このメソッドを使用することはできません。
代替案を検索すると、これに出会いました。ただし、それは機能しますが、ページのレンダリングは恐ろしく、画像やその他の要素はほとんど表示されません.
したがって、これを行う別の方法として、WebView.InvokeScriptメソッドを使用し、JavaScript を挿入して UA を変更することを望んでいました。問題は、正直に言うと、私が JavaScript に関してはまったくの初心者であることです。
私はもう少し検索を行いましたが、どうやらこのようなもの (ここにあります) が機能するようです:
navigator.__defineGetter__('userAgent', function(){
return 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25' // customized user agent
});
navigator.userAgent; // 'foo'
しかし、私が言ったように、私は Javascript の完全な初心者です。では、いつコードを挿入すればよいのでしょうか? このコードが起動したときにこのコードを実行する JavaScript のイベントをリッスンする必要がありますか?