2011-12-31 3 views
1

私はこのコードに奇妙な問題があります。基本的に私は、新しいActiveXObject( "InternetExplorer.Application")を読み込み、それへの参照をIEウィンドウオブジェクトに置いています。次に、HTMLファイルをロードして、新しいウィンドウに対してスクリプトを実行しようとする前に、読み込みが完了するまで待ちます。 VS2010経由でIEを起動すると、デバッグの有無にかかわらず(つまりF5またはCTRL-F5)、このコードが機能し、lDebugWindow.document.documentElementオブジェクトへの参照が取得されます。新しいActiveXObject( "InternetExplorer.Application")にwindow.documentオブジェクトがありません

問題 - 私はちょうどWIN7のタスクバーからIEを起動すると、lDebugWindow.documentは常に定義されていません。 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

は、私はあなたの問題は今なくなっていたとします。ここではラインとのコードはそれがIEのタスクバーの打ち上げ対VS2010は異なる動作を強調しています。他の人にとっては、それは正しいアクセスの問題かもしれません: Win7の下でIEは低い完全性processusで動作します。私は、異なるレベルの完全性を持つプロセスプロセッサ間でCOMポインタを得ることは不可能かもしれないと思います。

私は問題を解決するためにChangeWindowMessageFilterを使用しましたが、メッセージ経由で通信していました。しかし、グーグルを開始するのは良い点かもしれません。

関連する問題