私はこのコードに奇妙な問題があります。基本的に私は、新しい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;
}