我对这段代码有一个奇怪的问题。基本上我正在加载一个新的 ActiveXObject(“InternetExplorer.Application”)并将它的引用放到 IE 窗口对象上。然后我加载一个 HTML 文件并等待它完成加载,然后再尝试针对新窗口运行脚本。当我通过带有或不带有调试(即 F5 或 CTRL-F5)的 VS2010 启动 IE 时,此代码有效,并且我获得了对 lDebugWindow.document.documentElement 对象的引用。
问题——但是当我刚刚从 WIN7 任务栏启动 IE 时,lDebugWindow.document 总是未定义。任何想法从 VS2010 与任务栏启动时 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;
}