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");
}
}