DOC-04-02 WebView组件概览

本章介绍JavaFX的内嵌浏览器,该UI组件通过其API提供了一个web查看器以及完整的浏览功能。

该内嵌浏览器基于开源web浏览器引擎WebKit。其支持CSS、JavaScript、DOM和HTML5。

该内嵌浏览器使你可以在你的JavaFX应用程序中完成以下任务:

● 加载本地或者远程URL的HTML内容

● 获取Web历史

● 执行JavaScript指令

● 执行由JavaScript向上调用JavaFX

● 管理web上的弹出式(pop-up)窗口

● 为内嵌浏览器应用特效

内嵌浏览器从Node类继承了所有的属性和方法,因此它包含Node的所有特性。

内嵌浏览器的类在javafx.scene.web包中。图2-1展示了内嵌浏览器的架构以及它与其他JavaFX类的关系。

图2-1 内嵌浏览器的架构

4_2_1 webview-structure

2.1 WebEngine类

WebEngine类提供了基本的web页面功能。尽管它并不与用户直接交互,但它也支持用户交互,如导航链接和提交HTML表单。WebEngine类一次处理一个web页面。它支持加载HTML内容和访问DOM对象等基本功能,也支持执行JavaScript指令。

有两个构造方法能够创建WebEngine对象:空构造和带一个URL参数的构造。如果你使用空构造方法来实例化它,那么URL可以通过WebEngine对象的load()方法来传入。

从JavaFX SDK2.2开始,开发人员可以为某个特定的web engine启用/禁用JavaScript调用,以及应用自定义样式表。用户可以使用自定义的样式表替换WebEngine实例渲染的页面中的默认样式表。

2.2 WebView类

WebView类是Node类的一个扩展。它封装了WebEngine对象,将HTML内容加入程序的scene中,并且提供各种属性和方法来应用特效和变换。WebView对象的getEngine()方法返回一个与之关联的web engine。

例2-1展示了在程序中创建WebView和WebEngine对象的典型方式。

例2-1 创建WebView和WebEngine对象

2.3 PopupFeatures类

PopupFeatures类描述了JavaScript规范中定义的web弹出式(pop-up)窗口的功能。当你需要在你的程序中打开一个新的浏览器窗口时,这个类的实例就会被传递到通过调用setCreatePopupHandler()方法在WebEngine对象上注册的pop-up处理器中,如例2-2所示。

例2-2 创建pop-up处理器

如果该方法返回同一WebView对象的web engine,那么目标文档将会在同一个浏览器窗口中打开。如果要在另外的窗口中打开目标文档,请指定另一个web view的WebEngine对象。如果你需要阻止该弹出式窗口,则返回null即可。

2.4 其他特性

当使用WebView组件工作时,你应该记住,它拥有默认的内存缓存。这意味着任何已缓存的内容都会在包含该WebView组件的应用程序关闭时消失。当然,开发人员可以通过java.net.ResponseCache类来实现应用程序级别的缓存。从WebKit视角来看,持久化的缓存仅仅是网络层的一个属性,与connection和cookie处理机制类似。一旦其中某种缓存机制被采用,WebView组件就会以透明的方式来使用他们。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/07/html_webview/
百度已收录