khtml Library API Documentation

kjs_html.h

00001 // -*- c-basic-offset: 2 -*- 00002 /* 00003 * This file is part of the KDE libraries 00004 * Copyright (C) 1999 Harri Porten (porten@kde.org) 00005 * Copyright (C) 2003 Apple Computer, Inc. 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 */ 00021 00022 #ifndef _KJS_HTML_H_ 00023 #define _KJS_HTML_H_ 00024 00025 #include "dom/html_document.h" 00026 #include "dom/html_base.h" 00027 #include "dom/html_misc.h" 00028 #include "dom/html_form.h" 00029 #include "misc/loader_client.h" 00030 00031 #include "ecma/kjs_binding.h" 00032 #include "ecma/kjs_dom.h" 00033 #include "xml/dom_nodeimpl.h" // for NodeImpl::Id 00034 00035 namespace KJS { 00036 00037 class HTMLElement; 00038 00039 class HTMLDocument : public DOMDocument { 00040 public: 00041 HTMLDocument(ExecState *exec, const DOM::HTMLDocument& d); 00042 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; 00043 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); 00044 void putValueProperty(ExecState *exec, int token, const Value& value, int /*attr*/); 00045 virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const; 00046 virtual const ClassInfo* classInfo() const { return &info; } 00047 static const ClassInfo info; 00048 enum { Title, Referrer, Domain, URL, Body, Location, Cookie, 00049 Images, Applets, Links, Forms, Layers, Anchors, Scripts, All, Clear, Open, Close, 00050 Write, WriteLn, GetElementsByName, GetSelection, CaptureEvents, ReleaseEvents, 00051 BgColor, FgColor, AlinkColor, LinkColor, VlinkColor, LastModified, 00052 Height, Width, Dir, Frames, CompatMode }; 00053 DOM::Document toDocument() const { return static_cast<DOM::Document>( node ); } 00054 }; 00055 00056 class HTMLElement : public DOMElement { 00057 public: 00058 HTMLElement(ExecState *exec, const DOM::HTMLElement& e) : DOMElement(exec, e) { } 00059 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; 00060 Value getValueProperty(ExecState *exec, int token) const; 00061 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); 00062 void putValueProperty(ExecState *exec, int token, const Value& value, int); 00063 virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const; 00064 virtual UString toString(ExecState *exec) const; 00065 virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const; 00066 virtual const ClassInfo* classInfo() const; 00067 static const ClassInfo info; 00068 00069 static const ClassInfo html_info, head_info, link_info, title_info, 00070 meta_info, base_info, isIndex_info, style_info, body_info, form_info, 00071 select_info, optGroup_info, option_info, input_info, textArea_info, 00072 button_info, label_info, fieldSet_info, legend_info, ul_info, ol_info, 00073 dl_info, dir_info, menu_info, li_info, div_info, p_info, heading_info, 00074 blockQuote_info, q_info, pre_info, br_info, baseFont_info, font_info, 00075 hr_info, mod_info, a_info, img_info, object_info, param_info, 00076 applet_info, map_info, area_info, script_info, table_info, 00077 caption_info, col_info, tablesection_info, tr_info, 00078 tablecell_info, frameSet_info, frame_info, iFrame_info, marquee_info, layer_info; 00079 00080 enum { HtmlVersion, HeadProfile, LinkHref, LinkRel, LinkMedia, 00081 LinkCharset, LinkDisabled, LinkHrefLang, LinkRev, LinkTarget, LinkType, 00082 LinkSheet, TitleText, MetaName, MetaHttpEquiv, MetaContent, MetaScheme, 00083 BaseHref, BaseTarget, IsIndexForm, IsIndexPrompt, StyleDisabled, 00084 StyleSheet, StyleType, StyleMedia, BodyBackground, BodyVLink, BodyText, 00085 BodyLink, BodyALink, BodyBgColor, BodyScrollLeft, BodyScrollTop, 00086 BodyScrollHeight, BodyScrollWidth, BodyOnLoad, 00087 FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset, 00088 FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd, 00089 SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength, 00090 SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions, 00091 SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus, 00092 OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected, 00093 OptionForm, OptionText, OptionDefaultSelected, OptionDisabled, 00094 OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept, 00095 InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType, 00096 InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled, 00097 InputChecked, InputForm, InputAccessKey, InputAlign, InputAlt, 00098 InputName, InputSrc, InputUseMap, InputSelect, InputClick, 00099 TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect, 00100 TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType, 00101 TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue, 00102 TextAreaBlur, TextAreaFocus, ButtonForm, ButtonTabIndex, ButtonName, 00103 ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor, 00104 LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey, 00105 LegendAlign, UListType, UListCompact, OListStart, OListCompact, 00106 OListType, DListCompact, DirectoryCompact, MenuCompact, LIType, 00107 LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite, 00108 QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize, 00109 BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade, 00110 HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel, 00111 AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost, 00112 AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus, 00113 AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName, 00114 AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur, 00115 ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt, 00116 ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight, 00117 ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign, 00118 ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive, 00119 ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData, 00120 ObjectName, ObjectStandby, ObjectTabIndex, ObjectUseMap, ObjectWidth, ObjectContentDocument, 00121 ParamName, ParamType, ParamValueType, ParamValue, AppletArchive, 00122 AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase, 00123 AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace, 00124 MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape, 00125 AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol, 00126 AreaHostName, AreaPathName, AreaSearch, AreaTabIndex, ScriptEvent, 00127 ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset, 00128 ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding, 00129 TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth, 00130 TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow, 00131 TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame, 00132 TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot, 00133 TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff, 00134 TableColAlign, TableColSpan, TableColVAlign, TableColWidth, 00135 TableSectionCh, TableSectionDeleteRow, TableSectionChOff, 00136 TableSectionRows, TableSectionAlign, TableSectionVAlign, 00137 TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex, 00138 TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh, 00139 TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell, 00140 TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight, 00141 TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor, 00142 TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders, 00143 TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols, 00144 FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling, 00145 FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName, FrameContentDocument, 00146 FrameNoResize, IFrameLongDesc, IFrameAlign, 00147 IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight, 00148 IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth, IFrameContentDocument, 00149 MarqueeStart, MarqueeStop, 00150 LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers, 00151 ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang, 00152 ElementClassName, ElementInnerText, ElementDocument, ElementChildren, ElementAll }; 00153 00154 DOM::HTMLElement toElement() const { return static_cast<DOM::HTMLElement>(node); } 00155 }; 00156 00157 00158 class HTMLElementFunction : public DOMFunction { 00159 public: 00160 HTMLElementFunction(ExecState *exec, int i, int len); 00161 virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args); 00162 private: 00163 int id; 00164 }; 00165 00166 class HTMLCollection : public DOMObject { 00167 public: 00168 HTMLCollection(ExecState *exec, const DOM::HTMLCollection& c); 00169 ~HTMLCollection(); 00170 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; 00171 virtual Value call(ExecState *exec, Object &thisObj, const List&args); 00172 virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args); 00173 virtual bool implementsCall() const { return true; } 00174 virtual bool toBoolean(ExecState *) const; 00175 virtual Type type() const; 00176 virtual bool hasProperty(ExecState *exec, const Identifier &p) const; 00177 enum { Item, NamedItem, Tags }; 00178 Value getNamedItems(ExecState *exec, const Identifier &propertyName) const; 00179 virtual const ClassInfo* classInfo() const { return &info; } 00180 static const ClassInfo info; 00181 DOM::HTMLCollection toCollection() const { return collection; } 00182 virtual void hide() { hidden = true; } 00183 protected: 00184 DOM::HTMLCollection collection; 00185 bool hidden; 00186 }; 00187 00188 class HTMLSelectCollection : public HTMLCollection { 00189 public: 00190 HTMLSelectCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e) 00191 : HTMLCollection(exec, c), element(e) { } 00192 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; 00193 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); 00194 private: 00195 DOM::HTMLSelectElement element; 00196 }; 00197 00199 00200 class OptionConstructorImp : public ObjectImp { 00201 public: 00202 OptionConstructorImp(ExecState *exec, const DOM::Document &d); 00203 virtual bool implementsConstruct() const; 00204 virtual Object construct(ExecState *exec, const List &args); 00205 private: 00206 DOM::Document doc; 00207 }; 00208 00210 00211 class ImageConstructorImp : public ObjectImp { 00212 public: 00213 ImageConstructorImp(ExecState *exec, const DOM::Document &d); 00214 virtual bool implementsConstruct() const; 00215 virtual Object construct(ExecState *exec, const List &args); 00216 private: 00217 DOM::Document doc; 00218 }; 00219 00220 class Image : public DOMObject, public khtml::CachedObjectClient { 00221 public: 00222 Image(ExecState*, const DOM::Document &d); 00223 ~Image(); 00224 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const; 00225 Value getValueProperty(ExecState *exec, int token) const; 00226 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None); 00227 void putValueProperty(ExecState *exec, int token, const Value& value, int); 00228 virtual bool toBoolean(ExecState *) const { return true; } 00229 virtual void notifyFinished(khtml::CachedObject * finishedObj); 00230 virtual const ClassInfo* classInfo() const { return &info; } 00231 static const ClassInfo info; 00232 enum { Src, Complete, Width, Height, OnLoad }; 00233 private: 00234 UString src; 00235 DOM::Document doc; 00236 khtml::CachedImage* img; 00237 JSEventListener *m_onLoadListener; 00238 }; 00239 00240 Value getHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, bool hide=false); 00241 Value getSelectHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e); 00242 00243 /* Helper function object for determining the number 00244 * of occurrences of xxxx as in document.xxxx or window.xxxx. 00245 * The order of the TagLength array is the order of preference. 00246 */ 00247 class NamedTagLengthDeterminer { 00248 public: 00249 struct TagLength { 00250 DOM::NodeImpl::Id id; unsigned long length; DOM::NodeImpl *last; 00251 }; 00252 NamedTagLengthDeterminer(const DOM::DOMString& n, TagLength *t, int l) 00253 : name(n), tags(t), nrTags(l) {} 00254 void operator () (DOM::NodeImpl *start); 00255 private: 00256 const DOM::DOMString& name; 00257 TagLength *tags; 00258 int nrTags; 00259 }; 00260 00261 00262 } // namespace 00263 00264 #endif
KDE Logo
This file is part of the documentation for khtml Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:31:34 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003