У меня странная проблема с этим кодом.В основном я загружаю новый ActiveXObject («InternetExplorer.Application») и помещаю ссылку на него в объект окна IE.Затем я загружаю файл HTML и жду, пока он завершит загрузку, прежде чем пытаться запустить скрипт для нового окна.Когда я запускаю IE через VS2010 с отладкой или без нее (т.е. F5 или CTRL-F5), этот код работает, и я получаю ссылку на объект lDebugWindow.document.documentElement.
Проблема - но когда я просто запускаю IE с панели задач WIN7, lDebugWindow.document всегда не определен.Есть идеи, чем отличается IE при запуске из VS2010 от панели задач?Вот код с выделенной строкой, который ведет себя иначе, чем 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;
}