在将IE设置为“IE”时,document.body.innerHTML在IE上失败 ”

问题描述 投票:0回答:1

我们的应用程序使用嵌入式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有什么可以做的吗?

html internet-explorer dom webbrowser-control
1个回答
0
投票

MSIE WBC(Web浏览器控件),无论是由Delphi还是.net桌面应用程序托管,默认使用IE7 Emulation ....要确定托管WBC使用的IE仿真模式,请将以下代码段添加到onload事件中。警报(?document.documentMode document.documentMode: 'N / A');要使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(早期的MS版本的HTML)。

© www.soinside.com 2019 - 2024. All rights reserved.