相关疑难解决方法(0)

C#webbrowser Ajax调用

我正在使用嵌入在C#WPF .NET4应用程序中的webbrowser控件.每当我手动按下表单中的按钮时,浏览器就会挂起"正在处理您的请求"消息并且没有任何反应.如果我在完整的IE浏览器中执行相同操作,则会正常处理页面以生成结果.我错过了什么?谢谢按钮背后的代码如下

<a onclick="startSearch();" href="javascript:void(-1);" name="btnNext" class="btn floatLe noClear btnSubmit btnRight"> 
<span>Continue</span> 
</a>
Run Code Online (Sandbox Code Playgroud)

c# webbrowser-control

38
推荐指数
1
解决办法
3万
查看次数

WebBrowser控件中的Google字体仅在从外部"帮助"时才会显示

目前,我在.NET 2.0 WinForms应用程序中看到了一个奇怪的行为.

托管从其自己的应用程序内置的Web服务器(这个)中提取数据的WebBrowser控件,一切正常,直到它涉及到Google Web Fonts.

脚步:

在Windows 7下,出现以下行为:

1.)启动应用程序.该页面并没有显示谷歌网页字体:

在此输入图像描述

2.)在独立的Internet Explorer实例中打开内置Web服务器的URL:

在此输入图像描述

3.)返回C#应用程序,点击F5:

在此输入图像描述

现在,字体在我的应用程序中也可见.

行为:

似乎独立的IE做了额外的事情,我的应用程序中的托管IE不允许这样做.

一旦在独立IE中打开了URL,我就可以关闭我的应用程序和IE,然后重启我的应用程序并仍然获得正确的行为.

清除IE数据(缓存,cookie等)时,需要再次执行步骤1-3以将Google Web Font添加到托管Web浏览器中.

我的假设:

我猜这与IE似乎需要在其语言环境缓存中"安装"Web字体的权限有关.我刚刚Access-Control-Allow-Origin:*在我的请求标题中添加了一个,但这似乎没有改进任何东西.

我的问题:

您是否有任何关于如何在我的场景中使用Google Web Fonts的提示,而无需启动独立的IE?

更新2013-08-22 - 解决方案:

基于Adam的建议,我更改了WebBrowser控件的用户代理,这很有效.现在,我的WinForms应用程序中有一个带有托管浏览器的Web字体.

代码看起来是这样的:

public void ChangeUserAgent()
{
    // https://stackoverflow.com/a/12648705/107625
    const string ua = @"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";

    // https://stackoverflow.com/q/937573/107625
    UrlMkSetSessionOption(UrlmonOptionUseragent, ua, ua.Length, 0);
}
Run Code Online (Sandbox Code Playgroud)

使用那些P/Invoke辅助函数:

[DllImport(@"urlmon.dll", CharSet = CharSet.Ansi)]
private …
Run Code Online (Sandbox Code Playgroud)

c# webbrowser-control webfonts winforms google-webfonts

5
推荐指数
1
解决办法
1413
查看次数