📄 kjs_html.cpp
字号:
standby KJS::HTMLElement::ObjectStandby DontDelete
tabIndex KJS::HTMLElement::ObjectTabIndex DontDelete
type KJS::HTMLElement::ObjectType DontDelete
useMap KJS::HTMLElement::ObjectUseMap DontDelete
vspace KJS::HTMLElement::ObjectVspace DontDelete
width KJS::HTMLElement::ObjectWidth DontDelete
@end
@begin HTMLParamElementTable 4
name KJS::HTMLElement::ParamName DontDelete
type KJS::HTMLElement::ParamType DontDelete
value KJS::HTMLElement::ParamValue DontDelete
valueType KJS::HTMLElement::ParamValueType DontDelete
@end
@begin HTMLAppletElementTable 11
align KJS::HTMLElement::AppletAlign DontDelete
alt KJS::HTMLElement::AppletAlt DontDelete
archive KJS::HTMLElement::AppletArchive DontDelete
code KJS::HTMLElement::AppletCode DontDelete
codeBase KJS::HTMLElement::AppletCodeBase DontDelete
height KJS::HTMLElement::AppletHeight DontDelete
hspace KJS::HTMLElement::AppletHspace DontDelete
name KJS::HTMLElement::AppletName DontDelete
object KJS::HTMLElement::AppletObject DontDelete
vspace KJS::HTMLElement::AppletVspace DontDelete
width KJS::HTMLElement::AppletWidth DontDelete
@end
@begin HTMLMapElementTable 2
areas KJS::HTMLElement::MapAreas DontDelete|ReadOnly
name KJS::HTMLElement::MapName DontDelete
@end
@begin HTMLAreaElementTable 15
accessKey KJS::HTMLElement::AreaAccessKey DontDelete
alt KJS::HTMLElement::AreaAlt DontDelete
coords KJS::HTMLElement::AreaCoords DontDelete
href KJS::HTMLElement::AreaHref DontDelete
hash KJS::HTMLElement::AreaHash DontDelete|ReadOnly
host KJS::HTMLElement::AreaHost DontDelete|ReadOnly
hostname KJS::HTMLElement::AreaHostName DontDelete|ReadOnly
pathname KJS::HTMLElement::AreaPathName DontDelete|ReadOnly
port KJS::HTMLElement::AreaPort DontDelete|ReadOnly
protocol KJS::HTMLElement::AreaProtocol DontDelete|ReadOnly
search KJS::HTMLElement::AreaSearch DontDelete|ReadOnly
noHref KJS::HTMLElement::AreaNoHref DontDelete
shape KJS::HTMLElement::AreaShape DontDelete
tabIndex KJS::HTMLElement::AreaTabIndex DontDelete
target KJS::HTMLElement::AreaTarget DontDelete
@end
@begin HTMLScriptElementTable 7
text KJS::HTMLElement::ScriptText DontDelete
htmlFor KJS::HTMLElement::ScriptHtmlFor DontDelete
event KJS::HTMLElement::ScriptEvent DontDelete
charset KJS::HTMLElement::ScriptCharset DontDelete
defer KJS::HTMLElement::ScriptDefer DontDelete
src KJS::HTMLElement::ScriptSrc DontDelete
type KJS::HTMLElement::ScriptType DontDelete
@end
@begin HTMLTableElementTable 23
caption KJS::HTMLElement::TableCaption DontDelete
tHead KJS::HTMLElement::TableTHead DontDelete
tFoot KJS::HTMLElement::TableTFoot DontDelete
rows KJS::HTMLElement::TableRows DontDelete|ReadOnly
tBodies KJS::HTMLElement::TableTBodies DontDelete|ReadOnly
align KJS::HTMLElement::TableAlign DontDelete
bgColor KJS::HTMLElement::TableBgColor DontDelete
border KJS::HTMLElement::TableBorder DontDelete
cellPadding KJS::HTMLElement::TableCellPadding DontDelete
cellSpacing KJS::HTMLElement::TableCellSpacing DontDelete
frame KJS::HTMLElement::TableFrame DontDelete
rules KJS::HTMLElement::TableRules DontDelete
summary KJS::HTMLElement::TableSummary DontDelete
width KJS::HTMLElement::TableWidth DontDelete
createTHead KJS::HTMLElement::TableCreateTHead DontDelete|Function 0
deleteTHead KJS::HTMLElement::TableDeleteTHead DontDelete|Function 0
createTFoot KJS::HTMLElement::TableCreateTFoot DontDelete|Function 0
deleteTFoot KJS::HTMLElement::TableDeleteTFoot DontDelete|Function 0
createCaption KJS::HTMLElement::TableCreateCaption DontDelete|Function 0
deleteCaption KJS::HTMLElement::TableDeleteCaption DontDelete|Function 0
insertRow KJS::HTMLElement::TableInsertRow DontDelete|Function 1
deleteRow KJS::HTMLElement::TableDeleteRow DontDelete|Function 1
@end
@begin HTMLTableCaptionElementTable 1
align KJS::HTMLElement::TableCaptionAlign DontDelete
@end
@begin HTMLTableColElementTable 7
align KJS::HTMLElement::TableColAlign DontDelete
ch KJS::HTMLElement::TableColCh DontDelete
chOff KJS::HTMLElement::TableColChOff DontDelete
span KJS::HTMLElement::TableColSpan DontDelete
vAlign KJS::HTMLElement::TableColVAlign DontDelete
width KJS::HTMLElement::TableColWidth DontDelete
@end
@begin HTMLTableSectionElementTable 7
align KJS::HTMLElement::TableSectionAlign DontDelete
ch KJS::HTMLElement::TableSectionCh DontDelete
chOff KJS::HTMLElement::TableSectionChOff DontDelete
vAlign KJS::HTMLElement::TableSectionVAlign DontDelete
rows KJS::HTMLElement::TableSectionRows DontDelete|ReadOnly
insertRow KJS::HTMLElement::TableSectionInsertRow DontDelete|Function 1
deleteRow KJS::HTMLElement::TableSectionDeleteRow DontDelete|Function 1
@end
@begin HTMLTableRowElementTable 11
rowIndex KJS::HTMLElement::TableRowRowIndex DontDelete|ReadOnly
sectionRowIndex KJS::HTMLElement::TableRowSectionRowIndex DontDelete|ReadOnly
cells KJS::HTMLElement::TableRowCells DontDelete|ReadOnly
align KJS::HTMLElement::TableRowAlign DontDelete
bgColor KJS::HTMLElement::TableRowBgColor DontDelete
ch KJS::HTMLElement::TableRowCh DontDelete
chOff KJS::HTMLElement::TableRowChOff DontDelete
vAlign KJS::HTMLElement::TableRowVAlign DontDelete
insertCell KJS::HTMLElement::TableRowInsertCell DontDelete|Function 1
deleteCell KJS::HTMLElement::TableRowDeleteCell DontDelete|Function 1
@end
@begin HTMLTableCellElementTable 15
cellIndex KJS::HTMLElement::TableCellCellIndex DontDelete|ReadOnly
abbr KJS::HTMLElement::TableCellAbbr DontDelete
align KJS::HTMLElement::TableCellAlign DontDelete
axis KJS::HTMLElement::TableCellAxis DontDelete
bgColor KJS::HTMLElement::TableCellBgColor DontDelete
ch KJS::HTMLElement::TableCellCh DontDelete
chOff KJS::HTMLElement::TableCellChOff DontDelete
colSpan KJS::HTMLElement::TableCellColSpan DontDelete
headers KJS::HTMLElement::TableCellHeaders DontDelete
height KJS::HTMLElement::TableCellHeight DontDelete
noWrap KJS::HTMLElement::TableCellNoWrap DontDelete
rowSpan KJS::HTMLElement::TableCellRowSpan DontDelete
scope KJS::HTMLElement::TableCellScope DontDelete
vAlign KJS::HTMLElement::TableCellVAlign DontDelete
width KJS::HTMLElement::TableCellWidth DontDelete
@end
@begin HTMLFrameSetElementTable 2
cols KJS::HTMLElement::FrameSetCols DontDelete
rows KJS::HTMLElement::FrameSetRows DontDelete
@end
@begin HTMLFrameElementTable 9
contentDocument KJS::HTMLElement::FrameContentDocument DontDelete|ReadOnly
contentWindow KJS::HTMLElement::FrameContentWindow DontDelete|ReadOnly
frameBorder KJS::HTMLElement::FrameFrameBorder DontDelete
longDesc KJS::HTMLElement::FrameLongDesc DontDelete
marginHeight KJS::HTMLElement::FrameMarginHeight DontDelete
marginWidth KJS::HTMLElement::FrameMarginWidth DontDelete
name KJS::HTMLElement::FrameName DontDelete
noResize KJS::HTMLElement::FrameNoResize DontDelete
scrolling KJS::HTMLElement::FrameScrolling DontDelete
src KJS::HTMLElement::FrameSrc DontDelete
location KJS::HTMLElement::FrameLocation DontDelete
@end
@begin HTMLIFrameElementTable 12
align KJS::HTMLElement::IFrameAlign DontDelete
contentDocument KJS::HTMLElement::IFrameContentDocument DontDelete|ReadOnly
contentWindow KJS::HTMLElement::IFrameContentWindow DontDelete|ReadOnly
document KJS::HTMLElement::IFrameDocument DontDelete|ReadOnly
frameBorder KJS::HTMLElement::IFrameFrameBorder DontDelete
height KJS::HTMLElement::IFrameHeight DontDelete
longDesc KJS::HTMLElement::IFrameLongDesc DontDelete
marginHeight KJS::HTMLElement::IFrameMarginHeight DontDelete
marginWidth KJS::HTMLElement::IFrameMarginWidth DontDelete
name KJS::HTMLElement::IFrameName DontDelete
scrolling KJS::HTMLElement::IFrameScrolling DontDelete
src KJS::HTMLElement::IFrameSrc DontDelete
width KJS::HTMLElement::IFrameWidth DontDelete
@end
@begin HTMLMarqueeElementTable 2
start KJS::HTMLElement::MarqueeStart DontDelete|Function 0
stop KJS::HTMLElement::MarqueeStop DontDelete|Function 0
@end
@begin HTMLCanvasElementTable 1
getContext KJS::HTMLElement::GetContext DontDelete|Function 0
@end
*/
Value KJS::HTMLElement::tryGet(ExecState *exec, const Identifier &propertyName) const
{
DOM::HTMLElement element = static_cast<DOM::HTMLElement>(node);
#ifdef KJS_VERBOSE
kdDebug(6070) << "KJS::HTMLElement::tryGet " << propertyName.qstring() << " thisTag=" << element.tagName().string() << endl;
#endif
// First look at dynamic properties
switch (element.elementId()) {
case ID_FORM: {
DOM::HTMLFormElement form = element;
// Check if we're retrieving an element (by index or by name)
bool ok;
uint u = propertyName.toULong(&ok);
if (ok)
return getDOMNode(exec,form.elements().item(u));
KJS::HTMLCollection coll(exec,form.elements());
Value namedItems = coll.getNamedItems(exec, propertyName);
if (namedItems.type() != UndefinedType)
return namedItems;
}
break;
case ID_SELECT: {
DOM::HTMLSelectElement select = element;
bool ok;
uint u = propertyName.toULong(&ok);
if (ok)
return getDOMNode(exec,select.options().item(u)); // not specified by DOM(?) but supported in netscape/IE
}
break;
case ID_FRAMESET: {
DOM::Node frame = element.children().namedItem(propertyName.string());
if (!frame.isNull() && frame.elementId() == ID_FRAME) {
DOM::DocumentImpl* doc = static_cast<DOM::HTMLFrameElementImpl *>(frame.handle())->contentDocument();
if (doc) {
KHTMLPart* part = doc->part();
if (part) {
Window *window = Window::retrieveWindow(part);
if (window) {
return Value(window);
}
}
}
}
}
break;
case ID_FRAME:
case ID_IFRAME: {
DOM::DocumentImpl* doc = static_cast<DOM::HTMLFrameElementImpl *>(element.handle())->contentDocument();
if ( doc ) {
KHTMLPart* part = doc->part();
if ( part ) {
Object globalObject = Object::dynamicCast( Window::retrieve( part ) );
// Calling hasProperty on a Window object doesn't work, it always says true.
// Hence we need to use getDirect instead.
if ( !globalObject.isNull() && static_cast<ObjectImp *>(globalObject.imp())->getDirect( propertyName ) )
return globalObject.get( exec, propertyName );
}
}
}
break;
#if APPLE_CHANGES
case ID_EMBED:
case ID_OBJECT:
case ID_APPLET: {
if (propertyName == "__apple_runtime_object") {
return getRuntimeObject(exec,element);
}
Value domValue = getDOMNode(exec,element);
Value runtimeObject = getRuntimeObject(exec,element);
if (!runtimeObject.isNull()) {
ObjectImp *imp = static_cast<ObjectImp *>(runtimeObject.imp());
if (imp->hasProperty(exec, propertyName)) {
return imp->get (exec, propertyName);
}
}
}
break;
#endif
default:
break;
}
const HashTable* table = classInfo()->propHashTable; // get the right hashtable
const HashEntry* entry = Lookup::findEntry(table, propertyName);
if (entry) {
if (entry->attr & Function)
return lookupOrCreateFunction<KJS::HTMLElementFunction>(exec, propertyName, this, entry->value, entry->params, entry->attr);
return getValueProperty(exec, entry->value);
}
// Base HTMLElement stuff or parent class forward, as usual
return DOMObjectLookupGet<KJS::HTMLElementFunction, KJS::HTMLElement, DOMElement>(exec, propertyName, &KJS::HTMLElementTable, this);
}
#if APPLE_CHANGES
bool KJS::HTMLElement::implementsCall() const
{
DOM::HTMLElement element = static_cast<DOM::HTMLElement>(node);
switch (element.elementId()) {
case ID_EMBED:
case ID_OBJECT:
case ID_APPLET: {
DOM::DocumentImpl* doc = element.handle()->getDocument();
KJSProxy *proxy = KJSProxy::proxy(doc->part());
ExecState *exec = proxy->interpreter()->globalExec();
Value domValue = getDOMNode(exec,element);
Value runtimeObject = getRuntimeObject(exec,element);
if (!runtimeObject.isNull()) {
ObjectImp *imp = static_cast<ObjectImp *>(runtimeObject.imp());
return imp->implementsCall ();
}
}
break;
default:
break;
}
return false;
}
Value KJS::HTMLElement::call(ExecState *exec, Object &thisObj, const List&args)
{
DOM::HTMLElement element = static_cast<DOM::HTMLElement>(node);
switch (element.elementId()) {
case ID_EMBED:
case ID_OBJECT:
case ID_APPLET: {
Value domValue = getDOMNode(exec,element);
Value runtimeObject = getRuntimeObject(exec,element);
if (!runtimeObject.isNull()) {
ObjectImp *imp = static_cast<ObjectImp *>(runtimeObject.imp());
return imp->call (exec, thisObj, args);
}
}
break;
default:
break;
}
return Undefined();
}
#endif
Value KJS::HTMLElement::getValueProperty(ExecState *exec, int token) const
{
DOM::HTMLElement element = static_cast<DOM::HTMLElement>(node);
switch (element.elementId()) {
case ID_HTML: {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -