0

所以我有一个 Internet Explorer 对象,我在导航到一个页面后使用它来获取一个 DOM 对象。(实际上,我得到了一个 DOM 表单对象的集合,但我试图让这个问题尽可能通用。)

Set ie = CreateObject("InternetExplorer.Application")
ie.navigate (URL)
Set DOM = ie.document

然后我想退出 ie a la ie.quit,并继续使用我的新 DOM 对象。不幸的是,退出 ie 似乎清空了 dom 对象的所有内容。有没有办法阻止这种情况发生?我真的不想让 ie 等到程序结束才打开,因为它 a) 是一种资源消耗,并且 b) 在进一步发生错误的情况下往往会导致许多未关闭的实例。谢谢,如果答案真的很明显,我很抱歉(感觉可能是这样,尽管我真的四处寻找。)

4

2 回答 2

1

DOM 位于 Internet Explorer 进程地址空间中,该地址空间与您的应用程序是分开的。您所拥有的只是外部进程外 DOM 对象的进程内代理对象。通过这样做ie.quit,您可以有效地终止 IE 进程并切断其 DOM。

DocumentComplete如果您在访问 DOM 之前等待事件,您的代码也不清楚。你肯定不能在调用后立即访问它Navigate

于 2013-08-08T01:04:26.617 回答
1

我不认为你可以在你拿着对象的时候退出 IE。除非我遗漏了某些东西,否则您将持有对 COM 对象的引用;COM 对象不存储在您的应用程序中,而是由 IE 管理,因此当丢弃 IE 时,您也将对象与它一起丢弃。

如果您担心资源利用率,我会尝试尽可能短地保留 DOM,但是如果您需要访问 DOM,则需要保留 IE。

如果您只需要部分数据,当然可以随时从 DOM 中提取相关位,摆脱 IE 并处理刚刚提取的数据。

于 2013-08-08T01:07:45.887 回答