Internet explorer IE使用mshtmled.dll。但是什么是mshtmled.dll?

Internet explorer IE使用mshtmled.dll。但是什么是mshtmled.dll?,internet-explorer,dll,Internet Explorer,Dll,我有一个web应用程序,它不时地让IE处于挂起状态,IE使用100%的CPU。唯一的出路是终止IE进程 当我查看挂起在iexplore.exe中的线程的堆栈跟踪时,我看到堆栈遍历mshtmled.dll。我习惯于在这些堆栈跟踪中看到mshtml.dll,但不是mshtmled.dll 调用的方法使您认为页面上有编辑器(如CSelectionManager::SetEditContext或CSelectionManager::EnsureEditContextClick),但我没有在页面上使用HT

我有一个web应用程序,它不时地让IE处于挂起状态,IE使用100%的CPU。唯一的出路是终止IE进程

当我查看挂起在iexplore.exe中的线程的堆栈跟踪时,我看到堆栈遍历mshtmled.dll。我习惯于在这些堆栈跟踪中看到mshtml.dll,但不是mshtmled.dll

调用的方法使您认为页面上有编辑器(如
CSelectionManager::SetEditContext
CSelectionManager::EnsureEditContextClick
),但我没有在页面上使用HTML编辑器(如YUI RTE的FCK编辑器)

所以我真的很想知道:IE是如何使用mshtmled.dll的

正在尝试禁用mshtmled.dll @VonC在评论中建议我通过管理加载项对话框禁用mshtmled.dll,您可以从Internet选项的“程序”选项卡获得该对话框。禁用该dll并重新启动IE后,我可以看到它被报告为已禁用:

在这之后,我仍然能够重现这个问题,并且我确实看到(喘息!)在挂起线程的堆栈跟踪中使用了mshtmled.dll:

Microsoft修补程序 微软对一个与我看到的问题非常相似的问题有一个解决方案。但是这个修补程序很可能安装在我们可以重现问题的机器上,因为我们有SP3。在我看来,我这里遇到的问题与修复的问题性质类似。我只是在这里提到这一点,以防有人觉得这很有用。

像这样,您可以使用一个工具来分析您的HTML流量,并检查是什么触发了这种挂起状态

由于mshtmled.dll处理网页内的HTML编辑,因此此HTML通信中的某些内容必须触发mshtmled调用


正如Alessandro在评论中提到的,有一个JavaScript处于活动状态,并且由于mshtmled.dll与“DOM元素操作”相关,可能是JavaScript触发了这些mshtmled调用。
免责声明:“DOM操纵”并非其主要功能,因为mshtmled.dll被描述为发行版的一部分。它可能是一个IE模块,可以作为名为“HTMLDGSAFEHELPER”类的ActiveX组件停用。

选择“管理加载项-无需许可即可运行的加载项”,您将在“文件”列中看到mshtmled.dll

可能是某些JavaScript请求该对象,例如:

var a = new ActiveXObject('HtmlDlgSafeHelper.HtmlDlgSafeHelper');
a.fonts = ...;

@VonC,谢谢你指向线程的指针。那个人似乎也有同样的问题。我跟进了那条线索。但是使用Fiddler的建议没有帮助,因为Ajax响应在崩溃时已经由IE处理。@VonC,补充我之前的评论:Ajax响应的内容和挂起的事实之间似乎没有太大的相关性。根据我看到的堆栈跟踪,还有JavaScript在运行。@Alessandro:既然mshtmled.dll与DOM元素操作有关,可能是JavaScript造成的…@VonC,是什么让你认为mshtmled.dll与DOM元素操作有关。我并不是说它不是,根据它的名字,它是有意义的,但你有其他迹象吗?个人经验,文档?@Alessandro:不,我只是从我在网上看到的dll的各种描述中推断出来的。我已经更新了我的答案,包括停用ActiveX控件的可能性。也许这就足够了。让我们知道。哦。。。“既然我们有了SP3”:你是说你在和IE6合作?这一点点信息可能会派上用场,如果我们以前知道的话;)@是的,至少在我的环境中我有IE6和SP3。不知道其他复制这个问题的人有什么问题。但我不确定是否理解你的评论;这有什么帮助?因为我们有很多带IE6SP3的prb在工作。。。但仅适用于旧Hp台式机(2002-2003)。在较新的桌面上,或者在较新的IE上,CPU密集型使用都不明显。@VonC我明白了。我喜欢这种情况。所以拥有最新最棒的硬件不会有太大的区别。没有答案吗?也许是时候悬赏了(尽管我并不完全赞同目前实施的方式;):