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