2

我有一个网页显示在桌面应用程序的 WPF WebBrowser 控件中。我刚刚更新了网页以使用样式按钮而不是默认的灰色按钮,方法是从 asp.net Button 类型更改为 asp.net LinkBut​​ton 并对其应用 CSS 样式:

    a.btnSave
    {
        background: url(Resources/Images/btnSave.png) no-repeat 0 0;
        display:inline-block;
        width: 75px;
        height: 23px;
        text-indent: -9999px;
    }
    a.btnSave:hover {background-position: 0 -23px;}

    a.btnCancel
    {
        background: url(Resources/Images/btnCancel.png) no-repeat 0 0;
        display:inline-block;
        width: 75px;
        height: 23px;
        text-indent: -9999px;
    }
    a.btnCancel:hover {background-position: 0 -23px;}

    a.btnReset
    {
        background: url(Resources/Images/btnReset.png) no-repeat 0 0;
        display:inline-block;
        width: 75px;
        height: 23px;
        text-indent: -9999px;
    }
    a.btnReset:hover {background-position: 0 -23px;}

...

<asp:LinkButton ID="btnSave" runat="server" CssClass="btnSave" OnClick="btnSave_Click" OnClientClick="OnSubmit()" UseSubmitBehavior="False" Text=" " />
<asp:LinkButton ID="btnCancel" runat="server" CssClass="btnCancel" OnClick="btnCancel_Click" OnClientClick="OnSubmit()" CausesValidation="False" Text=" " />
<asp:LinkButton ID="btnReset" runat="server" CssClass="btnReset" OnClick="btnReset_Click" OnClientClick="OnSubmit()" CausesValidation="False" Text=" " />

当我在 IE 8(或 firefox)中查看页面时,按钮显示正确。但是当我在应用程序的 WebBrowser 控件中加载页面时,按钮丢失了。如果我将鼠标悬停在它们应该在的位置上,我不会收到手形图标,因此不仅仅是没有加载图像。当我查看源代码时,锚标记就在那里,如果我复制源代码并将其保存到 HTML 文件并在浏览器窗口中打开它,它们确实会正确显示。过去,我遇到了 WebBrowser 无法像浏览器那样显示浮动 div 的问题,不得不切换到表格布局。它不支持 inline-block 显示类型吗?

如果重要,这是为页面声明的文档类型:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4

2 回答 2

1

默认情况下,它使用不支持样式的兼容模式。将其更改为

<meta http-equiv="X-UA-Compatible" content="IE=9" />

或者

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

修复。

于 2012-06-26T15:41:03.477 回答
0

WPF WebBrowser 默认以 IE7 兼容模式运行。如果您可以控制该网站,则可以添加 <meta http-equiv="X-UA-Compatible"...> 标记,如此处其他答案之一所述。我尝试在运行 WPF 应用程序 + Web 应用程序的解决方案中执行此操作。客户端计算机正在运行 IE11。添加元标记并没有解决与用户代理字符串相关的问题。WebBrowser 仍然报告它是 IE7。我找到的解决方案是在注册表中配置 WebBrowser,如下所示:

Registry.SetValue(
@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
AppDomain.CurrentDomain.FriendlyName,
int.MaxValue);
于 2014-02-06T18:23:23.793 回答