winforms < br>Web浏览器中的标记问题

emeijp43  于 2023-01-31  发布在  其他
关注(0)|答案(2)|浏览(157)

当我尝试在table后添加<br>标记并使用winforms控件WebBrowser打开它时。

<!DOCTYPE HTML><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" align="left" width="100%"> <tbody>
<tr>
<td style="background:#ffb900;padding:5pt 2pt 5pt 2pt"></td>
<td width="100%" cellpadding="7px 6px 7px 15px" style="background:#fff8e5;padding:5pt 4pt 5pt 12pt;word-wrap:break-word">
<div style="color:#222222;"><span style="color:#222; font-weight:bold;">Caution:</span> Test caution here.
</div>
</td>
</tr>
</tbody>
</table>
<br>
<div>
<p>Test string here.</p>
</div>
</body>
</html>

它似乎没有在文本中插入单个换行符。

但它在Edge和Chrome中都能正常工作。

"为什么"
我知道有一些变通方法可以处理这个问题,比如"在表后面添加doube <br>"

</table>
<br>
<br>
<div>

或删除align="left"

<table border="0" cellspacing="0" cellpadding="0" width="100%">

但是,有什么方法可以一劳永逸地解决这个问题吗?而不是手动修改每个html文件。

lc8prwob

lc8prwob1#

如果无法更改HTML内容,可以将浏览器模拟设置为更高的IE版本,如代码中的IE11 Edge模式。例如,加载表单时,在设置浏览器内容之前:

using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
    @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
    true))
{
    var app = System.IO.Path.GetFileName(Application.ExecutablePath);
    key.SetValue(app, 11001, Microsoft.Win32.RegistryValueKind.DWord);
    key.Close();
}

如需了解更多信息:How can I get the WebBrowser control to show modern contents?

p4rjhz4m

p4rjhz4m2#

您应该添加一个指定模拟模式的meta标记,将其设置为Internet Explorer 11(IE系统中可用的最新版本):

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

这就给出了预期的行为。
您可以创建一个简单的过程,在文件中的<head>后面批量添加此行。
如果可能,最好迁移到WebView2以获得Edge-Chromium * 体验 *
参见:Introduction to Microsoft Edge WebView2

相关问题