设置为“<p> </p> <hr />”时,document.body.innerHTML在IE上失败

时间:2017-12-20 11:09:41

标签: html internet-explorer dom webbrowser-control

我们的应用程序使用嵌入式IE控件,我们注意到设置:

document.body.innerHTML它到<P><HR>会导致OLE异常"Unknown runtime error" 我可以在IE浏览器本身(IE版本8)中重现这一点。

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
  <title>Untitled</title>
  <script>
  function load(){
  // alert(document.body.innerHTML)
  document.body.innerHTML = '<P><HR>';
  }
  </script>
</head>

<body onload="load()">
</body>
</html>

如果body.innerHTML设置为<P></P><HR>,那么一切都很好。但HTML字符串来自数据库的问题。为什么会发生这种情况?如何解决这个问题?

编辑:代码在IE11上正常运行。但IE8系统存在问题。无论我是否更改FEATURE_CONTROL_BROWSER_EMULATION键。 IE8有什么可以做的吗?

1 个答案:

答案 0 :(得分:0)

MSIE WBC(Web浏览器控件),无论是由Delphi还是.net桌面应用程序托管,默认使用IE7 Emulation ....要确定托管WBC使用的IE仿真模式,请将以下代码段添加到onload事件。 警报(?document.documentMode document.documentMode:&#39; N / A&#39); 要使WBC使用IE仿真模式,您需要在注册表的FEATURE_CONTROL_BROWSER_EMULATION键中添加一个注册表项。

请参阅此处的文档 - https://msdn.microsoft.com/en-us/library/ms537184%28v=vs.85%29.aspx

让无效标记生效。  1.使用有效的文件类型声明。 ()。  2.更改注册表中的FEATURE_CONTROL_BROWSER_EMULATION值以模拟IE8或更高版本....

理想情况下,您希望WBC模仿IE11和html5的现代Web标准,但如果现有标记是HTML5之前的CSS 3,则可能无法实现。(即:您的标记是在Intranet网站上为IE6开发的,使用DHTML(HTML的早期MS版本)。