📄 dtd.cpp
字号:
return check_array(childID, tag_list_6); case ID_OL: case ID_UL: // OL: LI + if(childID == ID_LI) return true; return false; case ID_DIR: case ID_MENU: // (DIR|MENU): LI + - _3 if(childID == ID_LI) return true; return false; case ID_FORM: // FORM: _1 * - FORM return check_array(childID, tag_list_1); case ID_LABEL: // LABEL: _0 * - LABEL return check_array(childID, tag_list_0); case ID_SELECT: // SELECT: _7 + return check_array(childID, tag_list_7); case ID_OPTGROUP: // OPTGROUP: OPTION + if(childID == ID_OPTION) return true; return false; case ID_OPTION: case ID_TEXTAREA: case ID_TITLE: case ID_STYLE: case ID_SCRIPT: // OPTION: TEXT if(childID == ID_TEXT) return true; return false; case ID_FIELDSET: // FIELDSET: ( TEXT , LEGEND , _1 * ) if(childID == ID_TEXT) return true; if(childID == ID_LEGEND) return true; return check_array(childID, tag_list_1); case ID_BUTTON: // BUTTON: _1 * - _8 return check_array(childID, tag_list_1); case ID_TABLE: // TABLE: ( CAPTION ? , ( COL * | COLGROUP * ) , THEAD ? , TFOOT ? , TBODY + ) switch(childID) { case ID_CAPTION: case ID_COL: case ID_COLGROUP: case ID_THEAD: case ID_TFOOT: case ID_TBODY: return true; default: return false; } case ID_THEAD: case ID_TFOOT: case ID_TBODY: // THEAD: TR + if(childID == ID_TR) return true; return false; case ID_COLGROUP: // COLGROUP: COL * if(childID == ID_COL) return true; return false; case ID_TR: // TR: _9 + return check_array(childID, tag_list_9); return false; case ID_FRAMESET: // FRAMESET: ( _10 + & NOFRAMES ? ) return check_array(childID, tag_list_10); return (childID == ID_NOFRAMES); case ID_HEAD: // HEAD: ( TITLE & ISINDEX ? & BASE ? ) + _11 if(childID == ID_TITLE || childID == ID_ISINDEX || childID == ID_BASE) return true; return check_array(childID, tag_list_11); case ID_HTML: // HTML: ( HEAD , COMMENT, ( BODY | ( FRAMESET & NOFRAMES ? ) ) ) switch(childID) { case ID_HEAD: case ID_COMMENT: case ID_BODY: case ID_FRAMESET: case ID_NOFRAMES: case ID_SCRIPT: return true; default: return false; } default: //kdDebug( 6030 ) << "unhandled tag in dtd.cpp:checkChild(): tagID=" << tagID << "!" << endl; return false; }}void DOM::addForbidden(int tagId, ushort *forbiddenTags){ switch(tagId) { case ID_A: // we allow nested anchors. The innermost one wil be taken... //forbiddenTags[ID_A]++; break; case ID_PRE: //forbiddenTags[ID_IMG]++; forbiddenTags[ID_OBJECT]++; forbiddenTags[ID_EMBED]++; forbiddenTags[ID_APPLET]++; // why forbid them. We can deal with them in PRE //forbiddenTags[ID_BIG]++; //forbiddenTags[ID_SMALL]++; //forbiddenTags[ID_SUB]++; //forbiddenTags[ID_SUP]++; forbiddenTags[ID_BASEFONT]++; break; case ID_DIR: case ID_MENU: forbiddenTags[ID_P]++; forbiddenTags[ID_H1]++; forbiddenTags[ID_H2]++; forbiddenTags[ID_H3]++; forbiddenTags[ID_H4]++; forbiddenTags[ID_H5]++; forbiddenTags[ID_H6]++; forbiddenTags[ID_UL]++; forbiddenTags[ID_OL]++; forbiddenTags[ID_DIR]++; forbiddenTags[ID_MENU]++; forbiddenTags[ID_PRE]++; forbiddenTags[ID_DL]++; forbiddenTags[ID_DIV]++; forbiddenTags[ID_CENTER]++; forbiddenTags[ID_NOSCRIPT]++; forbiddenTags[ID_NOFRAMES]++; forbiddenTags[ID_BLOCKQUOTE]++; forbiddenTags[ID_FORM]++; forbiddenTags[ID_ISINDEX]++; forbiddenTags[ID_HR]++; forbiddenTags[ID_TABLE]++; forbiddenTags[ID_FIELDSET]++; forbiddenTags[ID_ADDRESS]++; break; case ID_FORM: // the parser deals with them in another way. helps supporting some broken html //forbiddenTags[ID_FORM]++; break; case ID_LABEL: forbiddenTags[ID_LABEL]++; break; case ID_BUTTON: forbiddenTags[ID_A]++; forbiddenTags[ID_INPUT]++; forbiddenTags[ID_SELECT]++; forbiddenTags[ID_TEXTAREA]++; forbiddenTags[ID_LABEL]++; forbiddenTags[ID_BUTTON]++; forbiddenTags[ID_FORM]++; forbiddenTags[ID_ISINDEX]++; forbiddenTags[ID_FIELDSET]++; forbiddenTags[ID_IFRAME]++; break; default: break; }}void DOM::removeForbidden(int tagId, ushort *forbiddenTags){ switch(tagId) { case ID_A: //forbiddenTags[ID_A]--; break; case ID_PRE: //forbiddenTags[ID_IMG]--; forbiddenTags[ID_OBJECT]--; forbiddenTags[ID_EMBED]--; forbiddenTags[ID_APPLET]--; //forbiddenTags[ID_BIG]--; //forbiddenTags[ID_SMALL]--; //forbiddenTags[ID_SUB]--; //forbiddenTags[ID_SUP]--; forbiddenTags[ID_BASEFONT]--; break; case ID_DIR: case ID_MENU: forbiddenTags[ID_P]--; forbiddenTags[ID_H1]--; forbiddenTags[ID_H2]--; forbiddenTags[ID_H3]--; forbiddenTags[ID_H4]--; forbiddenTags[ID_H5]--; forbiddenTags[ID_H6]--; forbiddenTags[ID_UL]--; forbiddenTags[ID_OL]--; forbiddenTags[ID_DIR]--; forbiddenTags[ID_MENU]--; forbiddenTags[ID_PRE]--; forbiddenTags[ID_DL]--; forbiddenTags[ID_DIV]--; forbiddenTags[ID_CENTER]--; forbiddenTags[ID_NOSCRIPT]--; forbiddenTags[ID_NOFRAMES]--; forbiddenTags[ID_BLOCKQUOTE]--; forbiddenTags[ID_FORM]--; forbiddenTags[ID_ISINDEX]--; forbiddenTags[ID_HR]--; forbiddenTags[ID_TABLE]--; forbiddenTags[ID_FIELDSET]--; forbiddenTags[ID_ADDRESS]--; break; case ID_FORM: //forbiddenTags[ID_FORM]--; break; case ID_LABEL: forbiddenTags[ID_LABEL]--; break; case ID_BUTTON: forbiddenTags[ID_A]--; forbiddenTags[ID_INPUT]--; forbiddenTags[ID_SELECT]--; forbiddenTags[ID_TEXTAREA]--; forbiddenTags[ID_LABEL]--; forbiddenTags[ID_BUTTON]--; forbiddenTags[ID_FORM]--; forbiddenTags[ID_ISINDEX]--; forbiddenTags[ID_FIELDSET]--; forbiddenTags[ID_IFRAME]--; break; default: break; }}struct attr_priv { attr_priv() { id = len = 0, val = 0; } attr_priv(ushort i, const QChar *v, ushort l) { id =i; len = l, val = v; } ushort id; const QChar *val; ushort len;};DOMString find_attr(ushort id, const attr_priv *attrs){ int i = 0; while(attrs[i].id != 0) { if(attrs[i].id == id) return DOMString(attrs[i].val, attrs[i].len); i++; } return DOMString();}static const QChar value_1_0 [] = { 'N','O','N','E' };attr_priv attr_list_1[] = { attr_priv(ATTR_CLEAR, value_1_0, 4)};static const QChar value_2_0 [] = { 'R','E','C','T' };attr_priv attr_list_2[] = { attr_priv(ATTR_SHAPE, value_2_0, 4)};static const QChar value_3_0 [] = { 'R','E','C','T' };attr_priv attr_list_3[] = { attr_priv(ATTR_SHAPE, value_3_0, 4)};static const QChar value_4_0 [] = { 'D','A','T','A' };attr_priv attr_list_4[] = { attr_priv(ATTR_VALUETYPE, value_4_0, 4)};static const QChar value_5_0 [] = { 'G','E','T' };static const QChar value_5_1 [] = { 'A','P','P','L','I','C','A','T','I','O','N','/','X','-','W','W','W','-','F','O','R','M','-','U','R','L','E','N','C','O','D','E','D' };attr_priv attr_list_5[] = { attr_priv(ATTR_METHOD, value_5_0, 3), attr_priv(ATTR_ENCTYPE, value_5_1, 33)};static const QChar value_6_0 [] = { 'T','E','X','T' };attr_priv attr_list_6[] = { attr_priv(ATTR_TYPE, value_6_0, 4)};static const QChar value_7_0 [] = { 'S','U','B','M','I','T' };attr_priv attr_list_7[] = { attr_priv(ATTR_TYPE, value_7_0, 6)};static const QChar value_8_0 [] = { '1' };attr_priv attr_list_8[] = { attr_priv(ATTR_SPAN, value_8_0, 1)};static const QChar value_9_0 [] = { '1' };attr_priv attr_list_9[] = { attr_priv(ATTR_SPAN, value_9_0, 1)};static const QChar value_10_0 [] = { '1' };static const QChar value_10_1 [] = { '1' };attr_priv attr_list_10[] = { attr_priv(ATTR_ROWSPAN, value_10_0, 1), attr_priv(ATTR_COLSPAN, value_10_1, 1)};static const QChar value_11_0 [] = { '1' };static const QChar value_11_1 [] = { 'A','U','T','O' };attr_priv attr_list_11[] = { attr_priv(ATTR_FRAMEBORDER, value_11_0, 1), attr_priv(ATTR_SCROLLING, value_11_1, 4)};static const QChar value_12_0 [] = { '1' };static const QChar value_12_1 [] = { 'A','U','T','O' };attr_priv attr_list_12[] = { attr_priv(ATTR_FRAMEBORDER, value_12_0, 1), attr_priv(ATTR_SCROLLING, value_12_1, 4)};static const QChar value_13_0 [] = { '-','/','/','W','3','C','/','/','D','T','D' };static const QChar value_13_1 [] = { 'T','R','A','N','S','I','T','I','O','N','A','L','/','/','E','N' };attr_priv attr_list_13[] = { attr_priv(ATTR_VERSION, value_13_0, 11), attr_priv(ATTR_HTML, value_13_1, 16)};DOMString DOM::findDefAttrNone(ushort){ return DOMString();};DOMString DOM::findDefAttrBR(ushort id){ return find_attr(id, attr_list_1);}DOMString DOM::findDefAttrA(ushort id){ return find_attr(id, attr_list_2);}DOMString DOM::findDefAttrAREA(ushort id){ return find_attr(id, attr_list_3);}DOMString DOM::findDefAttrPARAM(ushort id){ return find_attr(id, attr_list_4);}DOMString DOM::findDefAttrFORM(ushort id){ return find_attr(id, attr_list_5);}DOMString DOM::findDefAttrINPUT(ushort id){ return find_attr(id, attr_list_6);}DOMString DOM::findDefAttrBUTTON(ushort id){ return find_attr(id, attr_list_7);}DOMString DOM::findDefAttrCOLGROUP(ushort id){ return find_attr(id, attr_list_8);}DOMString DOM::findDefAttrCOL(ushort id){ return find_attr(id, attr_list_9);}DOMString DOM::findDefAttrTH(ushort id){ return find_attr(id, attr_list_10);}DOMString DOM::findDefAttrFRAME(ushort id){ return find_attr(id, attr_list_11);}DOMString DOM::findDefAttrIFRAME(ushort id){ return find_attr(id, attr_list_12);}DOMString DOM::findDefAttrHTML(ushort id){ return find_attr(id, attr_list_13);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -