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