KHTML
is an XML/HTML4 compliant HTML library, with support for DOM, Java, JavaScript
and Cascading Style Sheets (CSS).
You can get an overview of KHTML
's current capabilities here.
Using KHTML
in your program is quite easy. The following example shows you a complete
application with which you can already browse the web:
#include <khtml.h> #include <kapp.h> int main(int argc, char *argv[]) { KApplication a(argc, argv, "testkhtml"); KHTMLWidget *html = new KHTMLWidget; html->resize(800,500); //html->setJScriptEnabled(true); html->setJavaEnabled(true); //html->setFollowsLinks(false); a.setTopWidget(html); html->setURLCursor(QCursor(PointingHandCursor)); html->openURL(argv[1]); QWidget::connect(html, SIGNAL(setTitle(const QString &)), html, SLOT(setCaption(const QString &))); html->show(); a.exec(); } |
This small example already gives you a functional browser, that lets you browse the web
(you'll need the kio_http
executable from KDE though to access non local files). Just try
testkhtml http://www.kde.org
and you will get a widget showing KDE's home page.
KHTML
has a lot of functionality. Almost everything you'll ever need can be accessed through
the member functions of the class KHTMLWidget.
KHTML
provides a mostly complete implementation of Dom Level 1 and 2.
The DOM is an implementation using internal classes to hold the document's data. The classes accessing the DOM are using a refcounting scheme to hold the data. Thus the DOM does the memory management for you. You can just use the classes defined in the DOM header files to access parts of the document. As long as you don't use pointers, you will never get memory leaks (apart from bugs in the library... ;-).
You can easily access the document being shown by the KHTMLWidget::document()
method, from where you can
get access to every part of the document.
Thanks to the work of Richard Moore, KHTML
can display Java applets. Java is not enabled by
default, but you can do so by using KHTMLWidget::setEnableJava(true);
, and setting
the environment variable CLASSPATH
to:
CLASSPATH=$KDEDIR/share/apps/kjava/kjava-classes.zip:$JDK_DIR/lib
You will need to have the java developers kit installed though. I tested it with JDK-1.1.7, and don't know if it'll run with other versions of JDK or with Kaffe.
The JavaScript support aims at compliance with the ECMAScript Language specification ECMA-262 3rd edition. This roughly equals JavaScript 1.5.
Cascading style sheets 2.1 are mostly supported now.
Lars Knoll ([email protected])