我有這個代碼奇怪的問題。基本上我正在加載一個新的ActiveXObject(「InternetExplorer.Application」)並將其引用到IE窗口對象上。然後我加載一個HTML文件並等待它完成加載,然後嘗試在新窗口中運行腳本。當我通過VS2010通過或不通過調試(即F5或CTRL-F5)啓動IE時,此代碼可以正常工作,並獲得對lDebugWindow.document.documentElement對象的引用。新的ActiveXObject(「InternetExplorer.Application」)缺少window.document對象
問題 - 但是當我從WIN7任務欄啓動IE時,lDebugWindow.document總是未定義。任何想法從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;
}