2011-12-31 110 views
1

我有這個代碼奇怪的問題。基本上我正在加載一個新的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; 

} 

回答

0

我想現在你的問題了。對於其他人來說,這可能是一個正確的訪問問題: 在Win7下IE運行在一個低完整性的進程中。我想可能無法獲得不同級別完整性的processus之間的COM指針。

我用ChangeWindowMessageFilter來解決我的問題,但我通過消息進行通信。儘管開始使用谷歌搜索可能是一個好點。