новый ActiveXObject ("InternetExplorer.Application") отсутствует объект window.document - PullRequest
1 голос
/ 31 декабря 2011

У меня странная проблема с этим кодом.В основном я загружаю новый ActiveXObject («InternetExplorer.Application») и помещаю ссылку на него в объект окна IE.Затем я загружаю файл HTML и жду, пока он завершит загрузку, прежде чем пытаться запустить скрипт для нового окна.Когда я запускаю IE через VS2010 с отладкой или без нее (т.е. F5 или CTRL-F5), этот код работает, и я получаю ссылку на объект lDebugWindow.document.documentElement.

Проблема - но когда я просто запускаю IE с панели задач WIN7, lDebugWindow.document всегда не определен.Есть идеи, чем отличается IE при запуске из 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;

}

1 Ответ

0 голосов
/ 26 февраля 2013

Полагаю, ваша проблема исчезла.Для всех остальных это может быть проблема с правами доступа: под Win7 IE работает в процессоре с низким уровнем целостности.Я полагаю, что невозможно получить COM-указатели между процессами с разными уровнями целостности.

Я использовал ChangeWindowMessageFilter, чтобы исправить мою проблему, но общался через сообщения.Хотя, возможно, стоит начать поиск в Google.

...