Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 8应用程序-网络视图控件(C#)。注入JavaScript以更改用户代理字符串_C#_Javascript_Windows 8_Windows Store Apps_Windows Store - Fatal编程技术网

Windows 8应用程序-网络视图控件(C#)。注入JavaScript以更改用户代理字符串

Windows 8应用程序-网络视图控件(C#)。注入JavaScript以更改用户代理字符串,c#,javascript,windows-8,windows-store-apps,windows-store,C#,Javascript,Windows 8,Windows Store Apps,Windows Store,我正在尝试更改Windows 8应用程序中Webview的用户代理。目前,我正在这样做: [DllImport(“urlmon.dll”,CharSet=CharSet.Ansi)] 私有静态外部inturlmksetsessionoption(intdwoption, 字符串pBuffer,int-dwBufferLength,int-dwReserved); const int URLMON_OPTION_USERAGENT=0x10000001; 然后,如果我需要将UA换成iPhone,

我正在尝试更改Windows 8应用程序中Webview的用户代理。目前,我正在这样做:

[DllImport(“urlmon.dll”,CharSet=CharSet.Ansi)]
私有静态外部inturlmksetsessionoption(intdwoption,
字符串pBuffer,int-dwBufferLength,int-dwReserved);
const int URLMON_OPTION_USERAGENT=0x10000001;
然后,如果我需要将UA换成iPhone,例如:

string ua=“Mozilla/5.0(iPhone;与Mac OS X类似的CPU iPhone OS 60)”+
“AppleWebKit/536.26(KHTML,类似Gecko)版本/6.0 Mobile/10A5376e Safari/8536.25”;
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT,ua,ua.Length,0);
这很好用。但不幸的是,如果我要将此应用程序提交到Windows应用商店,我将无法使用此方法,因为Windows 8应用程序中不正式支持UrlMkSetSessionOption

在寻找替代品时,我遇到了。然而,尽管这样做是可行的,但页面呈现效果却非常糟糕,几乎没有显示任何图像或其他元素

所以我希望另一种方法是使用WebView.InvokeScript方法并注入一些JavaScript来更改UA。老实说,问题在于我对JavaScript完全是个初学者

我做了更多的搜索,很明显像这样()的东西会起作用:

navigator.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu定义器('userAgent',function()){
返回“Mozilla/5.0(iPhone;CPU iPhone OS 6_0,如Mac OS X)AppleWebKit/536.26(KHTML,如Gecko)版本/6.0 Mobile/10A5376e Safari/8536.25”//自定义用户代理
});
navigator.userAgent;//'富
但正如我所说,我是Javascript的完全初学者。那么我应该在什么时候注入代码呢?我是否需要在JavaScript中侦听一个事件,该事件在触发代码时运行此代码?

这很简单

 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";
            Uri targetUri = new Uri(url);
            HttpRequestMessage hrm=new HttpRequestMessage(HttpMethod.Get,targetUri);
            hrm.Headers.Add("User-Agent",ua);
            webView1.NavigateWithHttpRequestMessage(hrm);

JS解决方案无法在IMHO中运行,因为UserAgent ist已经将第一个HTTP GET发送到服务器-在执行任何JS之前很久!你确定吗?这就是我发现JS代码的地方,据那些用户说,它似乎可以工作。是的,我肯定。。。该解决方案适用于“JS单元测试”——即运行JS时在页面内部——在收到任何HTML/JS之前(根据定义)它都无法工作。。。浏览器在HTTP请求中发送一个用户代理,这在任何JS运行之前就发生了!好的,我明白了。我想我将不得不等到正式的WinRT支持的解决方案可用。谢谢你的帮助。这是否也适用于所有subsequest请求?我是说所有对.js、.css、.json等的调用