0

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 のイベントをリッスンする必要がありますか?

4

1 に答える 1