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


Using ResourceHandler you can determine whether resources such as HTML, Images, JavaScript & CSS files, favicon, etc. should be loaded or not. By default all resources are loaded. To modify default behavior you need to register your own ResourceHandler implementation. For example:   (使用ResourceHandler,您可以确定是否应加载HTML,图像,JavaScript和CSS文件,网站图标等资源。默认情况下,所有资源均已加载。要修改默认行为,您需要注册自己的ResourceHandler实现。例如:)

NetworkService networkService = browser.getContext().getNetworkService();
networkService.setResourceHandler(new ResourceHandler() {
    @Override
    public boolean canLoadResource(ResourceParams params) {
        boolean isNotAnImageType = 
                params.getResourceType() != ResourceType.IMAGE;
        if (isNotAnImageType) {
            return true;    
        }

        // Cancel loading of all images
        return false;
    }
});

  This implementation cancels loading of all images. Using same technique you can implement and register your own ResourceHandler where you can cancel loading of required resources.(此实现取消所有图像的加载。使用相同的技术,您可以实现并注册自己的ResourceHandler,在其中可以取消所需资源的加载。)

import com.teamdev.jxbrowser.chromium.*;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

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

/**
 * This sample demonstrates how to handle all resources such as
 * HTML, PNG, JavaScript, CSS files and decide whether web browser
 * engine should load them from web server or not. For example, in
 * this sample we cancel loading of all Images.
 */
public class ResourceHandlerSample {
    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);

        NetworkService networkService = browser.getContext().getNetworkService();
        networkService.setResourceHandler(new ResourceHandler() {
            @Override
            public boolean canLoadResource(ResourceParams params) {
                System.out.println("URL: " + params.getURL());
                System.out.println("Type: " + params.getResourceType());
                boolean isNotImageType = 
                        params.getResourceType() != ResourceType.IMAGE;
                if (isNotImageType) {
                    return true;    // Cancel loading of all images
                }
                return false;
            }
        });

        browser.loadURL("http://www.google.com");
    }
}