新的ActiveXObject(“InternetExplorer.Application”)缺少window.document对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新的ActiveXObject(“InternetExplorer.Application”)缺少window.document对象相关的知识,希望对你有一定的参考价值。

我对这段代码有一个奇怪的问题。基本上我正在加载一个新的ActiveXObject(“InternetExplorer.Application”)并将它的引用放到IE窗口对象上。然后我加载一个html文件并等待它完成加载,然后尝试在新窗口上运行脚本。当我通过VS2010启动IE时,无论有没有调试(即F5或CTRL-F5),这段代码都可以工作,我得到了对lDebugWindow.document.documentElement对象的引用。

问题 - 但是当我刚刚从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;


答案

我想你的问题现在已经消失了。对于其他任何人来说,这可能是一个正确的访问问题:在Win7下,IE运行在一个低完整性的流程中。我想可能无法在具有不同完整性级别的processus之间获得COM指针。

我使用ChangeWindowMessageFilter来修复我的问题,但我正在通过消息进行通信。这可能是一个很好的开始谷歌搜索。

以上是关于新的ActiveXObject(“InternetExplorer.Application”)缺少window.document对象的主要内容,如果未能解决你的问题,请参考以下文章

js判断浏览器是否为ie

新的 Audio() 未在 Internet Explorer 中实现

如何使用JavaScript中的ActiveXObject 对象

在 XDomainRequest 或 ActiveXObject('Microsoft.XMLHTTP') 中设置标头

ActiveXObject--微软私有拓展名

ActiveX控件之ActiveXObject is not defined