如何让浏览器显示文本的背景颜色?

How to make a WebBrowser display the background color of text?

我有一个简单的 .html 文件,定义如下。
如果我用普通的浏览器打开它,它的背景颜色可以正确显示。但是我用System.Windows.Forms.WebBrowser控件打开的时候,背景色显示不出来

<head>
  <meta charset="UTF-8">
<style>
nw {
    background-color: Orange;
}
np {
    background-color: DodgerBlue;
}
</style>
</head>
<table style="width:100%">
  <tr>
    <th>Time Created</th>
    <th>Content</th>
  </tr>
  <tr>
    <td>26/11/2018 20:39:21</td>
    <td><nw>hello</nw></td>
  </tr>
 </table>

表单的 TransparencyKey 没有帮助; WebBrowser 没有 BackGround 颜色 属性.

有谁知道为什么以及如何解决?

为了修改 Html 页面内容的方面,您需要修改 HTML 文档本身。
窗体的 TransparencyKey 属性 and/or WebBrowser 控件 BackColor 属性 不相关。这些属性在可用时修改控件的方面,而不是 HTML 内容或其呈现。

同样重要的是:WebBrowser 控件,如果没有 指示,则默认为 IE7 兼容模式。许多 HTML 功能在此模式下不可用。

WebBrowser 的兼容模式 set/modify 有不同的方法 class。
您可以修改注册表项以永久设置 IE11/Edge 兼容模式。看到这个答案:
How can I get the WebBrowser control to show modern contents?

注意Key在CURRENT_USER分支。您不需要提升权限即可对其进行修改。
此外,这不是 特殊 hack。此注册表值应用per-executable(您在此处注册您自己的程序),它不会修改一般用户设置。臭名昭著的程序使用此方法设置 WebBrowser 控件兼容模式。

另一种non-permanent、per-document方法是使用HTML5格式设置HTMLheader:

<!DOCTYPE html>
<meta http-equiv='x-ua-compatible' content='IE=edge'>

将这些行添加到 Html 文档,将兼容模式设置为 IE11/Edge。
您的文档可以修改如下:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='x-ua-compatible' content='IE=edge'>
  <meta charset="UTF-8">
<style>
nw {
    background-color: Orange;
}
np {
    background-color: DodgerBlue;
}
</style>
</head>
<body>
<table style="width:100%">
  <tr>
    <th>Time Created</th>
    <th>Content</th>
  </tr>
  <tr>
    <td>26/11/2018 20:39:21</td>
    <td><nw>hello</nw></td>
  </tr>
 </table>
</body>
</html>