Note: Advice in this article will only work for JxBrowser 6. See the corresponding article for JxBrowser 7 here.(注意:本文中的建议仅适用于JxBrowser6,JxBrowser7相应文章请点击这里。)


JxBrowser API allows receiving all output messages sent to the Web Console via console.log() JavaScript function. You can listen to JavaScript Web Console messages with different levels: DEBUG, LOG, WARNING and ERROR. To start receiving Web Console messages you must register ConsoleListener for a specified Browser instance. For example: (JxBrowser API允许接收通过console.log()输出的所有关于JavaScript函数发送到Web控制台的消息。您可以监听不同级别的JavaScript Web Console消息:DEBUG,LOG,WARNING和ERROR。要开始监听Web控制台消息,必须为指定的Browser实例注册ConsoleListener。例如:)

browser.addConsoleListener(new ConsoleListener() {
    public void onMessage(ConsoleEvent event) {
        System.out.println("Message: " + event.getMessage());
    }
});

Now, if JavaScript code on the loaded web page prints message to Web Console via the console.log()console.error()console.info()or console.warn() function, then the ConsoleListener.onMessage() methods will be invoked.(现在,如果加载的网页上的JavaScript代码通过console.log(),console.error(),console.info()或console.warn()函数将消息打印到Web控制台,那么ConsoleListener.onMessage()方法将被调用。)

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.events.ConsoleEvent;
import com.teamdev.jxbrowser.chromium.events.ConsoleListener;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;<span class="fr-marker" data-id="0" data-type="false" style="display: none; line-height: 0;"></span><span class="fr-marker" data-id="0" data-type="true" style="display: none; line-height: 0;"></span>

import javax.swing.*;
import java.awt.*;

/**
 * The sample demonstrates how to listen to console messages including
 * JavaScript errors.
 */
public class ConsoleListenerSample {
    public static void main(String[] args) {
        Browser browser = new Browser();
        BrowserView browserView = new BrowserView(browser);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(browserView, BorderLayout.CENTER);
        frame.setSize(700, 500);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        browser.addConsoleListener(new ConsoleListener() {
            public void onMessage(ConsoleEvent event) {
                System.out.println("Level: " + event.getLevel());
                System.out.println("Message: " + event.getMessage());
            }
        });
        browser.executeJavaScript("console.error(\"Error message\");");
    }
}