【问题标题】:WPF System.Windows.Controls.WebBrowser not rendering link buttonsWPF System.Windows.Controls.WebBrowser 不呈现链接按钮
【发布时间】:2012-05-24 10:10:54
【问题描述】:

我有一个网页显示在桌面应用程序的 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">

【问题讨论】:

  • 我刚刚发现,如果我在 IE 中打开兼容性视图,按钮就会消失。这可能是问题吗?
  • 它正在使用兼容模式,如果我使用注册表项将其关闭,或者在我的上设置 页面按钮出现!这给我留下了这些问题:我的 !DOCTYPE 不是指定使用最新的 HTML5/CSS3 标准吗?如果是这样,我的代码有什么问题?为什么 会使其正常工作,而仅 却不能?
  • 新标签并不真正相关。我们在这里不是在谈论 HTML5 或 CSS3。
  • @BoltClock 请解释为什么我们不是。这似乎是决定按钮是否显示的因素。我想以符合 html5/css3 的方式执行此操作。
  • 因为你不是在写 HTML5/CSS3。

标签: html css webbrowser-control doctype x-ua-compatible


【解决方案1】:

默认情况下它使用不支持样式的兼容模式。改成

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

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

修复它。

【讨论】:

  • 如何在 Firefox 中修复它?
【解决方案2】:

默认情况下,WPF WebBrowser 将在 IE7 兼容模式下运行。 如果您可以控制该网站,则可以添加 标记,如此处其他答案之一所述。 我尝试在运行 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    相关资源
    最近更新 更多