gpt4 book ai didi

javascript - 新的 ActiveXObject ("InternetExplorer.Application")缺少 window.document 对象

转载 作者:行者123 更新时间:2023-11-28 10:03:33 25 4
gpt4 key购买 nike

我对这段代码有一个奇怪的问题。基本上,我加载一个新的 ActiveXObject(“InternetExplorer.Application”)并将对其的引用放到 IE 窗口对象上。然后,我加载一个 HTML 文件并等待它完成加载,然后再尝试在新窗口中运行脚本。当我通过 VS2010 启动 IE(带或不带调试(即 F5 或 CTRL-F5))时,此代码有效,并且我获得了对 lDebugWindow.document.documentElement 对象的引用。

问题——但是当我刚从WIN7任务栏启动IE时,lDebugWindow.document总是未定义。你知道从 VS2010 启动 IE 与从任务栏启动 IE 有什么不同吗?下面是突出显示的行的代码,其行为与 VS2010 和 IE 任务栏启动不同:

function wfDebugXml(pNode)
{
window.lDebugWindow = new ActiveXObject("InternetExplorer.Application");
lDebugWindow.navigate(sFrameworkBase + "/GlobalDebugger/Debug.htm");

lReady = false;

for (var i = 0; i < 40; i++)
{
if (!lReady)
{
try
{
lDebugWindow.onreadystatechange = wfDebugRenderXml(pNode);
}
catch (e) { };
}
}
}

function wfDebugRenderXml(pNode)
{
// THE NEXT LINE IS THE ONE THAT HAS THE PROBLEM
var lDocumentElement = lDebugWindow.document.documentElement;

var lXsltDoc = Sarissa.getDomDocument();
lXsltDoc.async = false;
lXsltDoc.load("GlobalDebugger/Debug.xsl");

var lXslt = new XSLTProcessor();
lXslt.importStylesheet(lXsltDoc);

var lXmlDoc = Sarissa.getDomDocument();
lXmlDoc.loadXML(pNode.xml);

var lXmlOutput = lXslt.transformToFragment(lXmlDoc, lDebugWindow.document);

while (lDocumentElement.childNodes.length > 0)
{
lDocumentElement.removeChild(lDocumentElement.lastChild);
}

lDocumentElement.appendChild(lXmlOutput);
lDebugWindow.Visible = true;

}

最佳答案

我想你的问题现在已经解决了。对于其他人来说,这可能是一个正确的访问问题:Win7下IE运行在低完整性进程中。我想可能无法在具有不同完整性级别的进程之间获取 COM 指针。

我使用 ChangeWindowMessageFilter 来解决我的问题,但我是通过消息进行通信的。不过,开始谷歌搜索可能是一个好时机。

关于javascript - 新的 ActiveXObject ("InternetExplorer.Application")缺少 window.document 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com