2016-06-09 92 views
2

我想在TWebbrowser中运行一个javascript代码并获取它的控制台输出。例如,如果我运行这段代码在控制台:如何在TWebbrowser中获取JS脚本控制台输出?

var a = 2; var b = 3; var c = a +b ; console.log('The result is '+ c); 

我得到的控制台输出:

The result is 5 

我用它来运行与TWebbrowser JS脚本的代码是这样的:

twebbrowser1.navigate('javascript:var a = 2; var b = 3; var c = a +b ; console.log('The result is '+ c);'); 

它的工作原理,但我不知道如何获得控制台输出。有没有办法做到这一点?

在此先感谢!

+0

你是什么意思“获取控制台输出”?你想让TWebBrowser *显示* JS控制台,或者你想*捕获*(在Delphi代码中)控制台脚本产生了什么输出? – MartynA

+1

在后一种情况下,你甚至不应该使用TWebBrowser来运行JavaScript。直接运行JavaScript,例如[Windows Script Host](https://msdn.microsoft.com/en-us/library/t64z26x3.aspx)('IActiveScript'接口),'cscript.exe'或其他脚本引擎。使用* visual * HTML组件自己执行*非可视*脚本工作是很浪费的。 –

+0

@MartynA这就像我说的,我想用我的Delphi应用程序获得控制台输出。 – delphirules

回答

6

根据MSDN,它看起来像你的(德尔福)应用程序将需要实现IDeveloperConsoleMessageReceiver接口。

然后,您可以将IDeveloperConsoleMessageReceiver的对象实例连接到浏览器的当前文档。查询TWebBrowser.Document属性的IOleCommandTarget接口,然后调用其Exec()方法发出IDM_ADDCONSOLEMESSAGERECEIVER命令。

试试看,如果卡住了,请再试一次。

+0

非常感谢雷米!我失去了关于你帮助我多少次的信息,不仅在这里,而且在很多其他来源,如Embarcadero论坛。对于您为Delphi社区提供的这么好的工作,请非常感谢您的感谢。你摇滚! – delphirules

+1

是的,我也有义务让雷米在这里编辑我的答案(还有很多其他的东西!)。 – MartynA