2016-06-09 78 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

相關問題