2010-10-15 130 views
0

我有一个Windows应用程序,其中包含一个浏览器控件,可从我的网站加载页面。但是,由于Windows应用程序,我无法以通常的方式调试Javascript(Firebug,控制台,警报等)。附加到外部浏览器窗口

我希望写一个jQuery插件记录到外部浏览器窗口,这样我可以简单地这样做:

$.log('test'); 

到目前为止,用下面的,我能够创造出窗口并显示templateContent,但不能将消息写入它:

var consoleWindow; 

function getConsoleWindow() { 
    if (typeof (consoleWindow) === 'undefined') { 
     consoleWindow = createConsoleWindow(); 
    } 

    return consoleWindow; 
} 

function createConsoleWindow() { 
    var newConsoleWindow = window.open('consoleLog', '', 'status,height=200,width=300'); 
    var templateContent = '<html><head><title>Console</title></head>' + 
          '<body><h1>Console</h1><div id="console">' + 
          '<span id="consoleText"></span></div></body></html>'; 
    newConsoleWindow.document.write(templateContent); 
    newConsoleWindow.document.close(); 
    return newConsoleWindow; 
} 

function writeToConsole(message) { 
    var console = getConsoleWindow(); 
    var consoleDoc = console.document.open(); 
    var consoleMessage = document.createElement('span'); 
    consoleMessage.innerHTML = message; 
    consoleDoc.getElementById('consoleText').appendChild(consoleMessage); 
    consoleDoc.close(); 
} 

jQuery.log = function (message) { 
    if (window.console) { 
     console.log(message); 
    } else { 
     writeToConsole(message); 
    } 
}; 

目前,的getElementById( 'consoleText')失败。我是否可能,如果是这样,我错过了什么?

回答

0

如果我不关闭()该文档,它似乎工作正如我所希望的。

0

尝试增加

consoleDoc.getElementById('consoleText'); 

consoleDoc.getElementById('consoleText').appendChild(consoleMessage); 

如果您添加的行是一个失败,则意味着consoleDoc是不正确的,如果下一行是唯一一个前正确的失败然后..ById('consoleText')不匹配