mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 21:49:11 +02:00
* Patch from Martok to let CreateElement create correct class (bug ID 32322)
git-svn-id: trunk@37048 -
This commit is contained in:
parent
5e51c9cc06
commit
0117568c25
@ -665,7 +665,7 @@ type
|
||||
function HashForName(const aName: DOMString): PHashItem;
|
||||
|
||||
// Helper functions (not in DOM standard):
|
||||
function CreateElement(const tagName: DOMString): THTMLElement;
|
||||
function CreateElement(const tagName: DOMString; UseSpecificClass : Boolean = True): THTMLElement;
|
||||
function CreateSubElement: THTMLElement;
|
||||
function CreateSupElement: THTMLElement;
|
||||
function CreateSpanElement: THTMLElement;
|
||||
@ -697,8 +697,9 @@ type
|
||||
function CreateHtmlElement: THTMLHtmlElement;
|
||||
function CreateHeadElement: THTMLHeadElement;
|
||||
function CreateLinkElement: THTMLLinkElement;
|
||||
{ function CreateTitleElement: THTMLTitleElement;
|
||||
function CreateTitleElement: THTMLTitleElement;
|
||||
function CreateMetaElement: THTMLMetaElement;
|
||||
{
|
||||
function CreateBaseElement: THTMLBaseElement;
|
||||
function CreateIsIndexElement: THTMLIsIndexElement;
|
||||
function CreateStyleElement: THTMLStyleElement;}
|
||||
@ -1248,10 +1249,71 @@ begin
|
||||
Result := TByNameNodeList.Create(Self, ElementName);
|
||||
end;
|
||||
|
||||
function THTMLDocument.CreateElement(const tagName: DOMString): THTMLElement;
|
||||
function THTMLDocument.CreateElement(const tagName: DOMString; UseSpecificClass : Boolean = True): THTMLElement;
|
||||
|
||||
var
|
||||
elClass: TDOMElementClass;
|
||||
begin
|
||||
Result := THTMLElement.Create(Self);
|
||||
Result.FNSI.QName := FNames.FindOrAdd(DOMPChar(tagName), Length(tagName));
|
||||
elClass:=THTMLElement;
|
||||
if UseSpecificClass then
|
||||
case UpperCase(tagName) of
|
||||
'HTML' : elClass:= THTMLHtmlElement;
|
||||
'HEAD' : elClass:= THTMLHeadElement;
|
||||
'BODY' : elClass:= THTMLBodyElement;
|
||||
'P' : elClass:= THTMLParagraphElement;
|
||||
'LINK' : elClass:= THTMLLinkElement;
|
||||
'TITLE' : elClass:= THTMLTitleElement;
|
||||
'META' : elClass:= THTMLMetaElement;
|
||||
'BASE' : elClass:= THTMLBaseElement;
|
||||
'ISINDEX' : elClass:= THTMLIsIndexElement;
|
||||
'STYLE' : elClass:= THTMLStyleElement;
|
||||
'FORM' : elClass:= THTMLFormElement;
|
||||
'SELECT' : elClass:= THTMLSelectElement;
|
||||
'OPTGROUP' : elClass:= THTMLOptGroupElement;
|
||||
'OPTION' : elClass:= THTMLOptionElement;
|
||||
'INPUT' : elClass:= THTMLInputElement;
|
||||
'TEXTAREA' : elClass:= THTMLTextAreaElement;
|
||||
'BUTTON' : elClass:= THTMLButtonElement;
|
||||
'LABEL' : elClass:= THTMLLabelElement;
|
||||
'FIELDSET' : elClass:= THTMLFieldSetElement;
|
||||
'LEGEND' : elClass:= THTMLLegendElement;
|
||||
'UL' : elClass:= THTMLUListElement;
|
||||
'OL' : elClass:= THTMLOListElement;
|
||||
'DL' : elClass:= THTMLDListElement;
|
||||
'DIRECTORY' : elClass:= THTMLDirectoryElement;
|
||||
'MENU' : elClass:= THTMLMenuElement;
|
||||
'LI' : elClass:= THTMLLIElement;
|
||||
'DIV' : elClass:= THTMLDivElement;
|
||||
'H1','H2','H3','H4','H5',
|
||||
'H6','H7','H8','H9' : elClass:= THTMLHeadingElement;
|
||||
'QUOTE' : elClass:= THTMLQuoteElement;
|
||||
'PRE' : elClass:= THTMLPreElement;
|
||||
'BR' : elClass:= THTMLBRElement;
|
||||
'BASEFONT' : elClass:= THTMLBaseFontElement;
|
||||
'FONT' : elClass:= THTMLFontElement;
|
||||
'HR' : elClass:= THTMLHRElement;
|
||||
'MOD' : elClass:= THTMLModElement;
|
||||
'A' : elClass:= THTMLAnchorElement;
|
||||
'IMG' : elClass:= THTMLImageElement;
|
||||
'OBJECT' : elClass:= THTMLObjectElement;
|
||||
'PARAM' : elClass:= THTMLParamElement;
|
||||
'APPLET' : elClass:= THTMLAppletElement;
|
||||
'MAP' : elClass:= THTMLMapElement;
|
||||
'AREA' : elClass:= THTMLAreaElement;
|
||||
'SCRIPT' : elClass:= THTMLScriptElement;
|
||||
'TABLE' : elClass:= THTMLTableElement;
|
||||
'CAPTION' : elClass:= THTMLTableCaptionElement;
|
||||
//'TABLECOL' : elClass:= THTMLTableColElement;
|
||||
'THEAD','TBODY',
|
||||
'TFOOT' : elClass:= THTMLTableSectionElement;
|
||||
'TR' : elClass:= THTMLTableRowElement;
|
||||
'TD','TH' : elClass:= THTMLTableCellElement;
|
||||
'FRAMESET' : elClass:= THTMLFrameSetElement;
|
||||
'FRAME' : elClass:= THTMLFrameElement;
|
||||
'IFRAME' : elClass:= THTMLIFrameElement;
|
||||
end;
|
||||
Result := THTMLElement(elClass.Create(Self));
|
||||
Result.FNSI.QName:=HashForName(tagName);
|
||||
end;
|
||||
|
||||
function THTMLDocument.HashForName(const aName: DOMString): PHashItem;
|
||||
@ -1306,6 +1368,18 @@ begin
|
||||
Result.FNSI.QName := HashForName('a');
|
||||
end;
|
||||
|
||||
function THTMLDocument.CreateTitleElement: THTMLTitleElement;
|
||||
begin
|
||||
Result := THTMLTitleElement.Create(Self);
|
||||
Result.FNSI.QName := HashForName('title');
|
||||
end;
|
||||
|
||||
function THTMLDocument.CreateMetaElement: THTMLMetaElement;
|
||||
begin
|
||||
Result := THTMLMetaElement.Create(Self);
|
||||
Result.FNSI.QName := HashForName('meta');
|
||||
end;
|
||||
|
||||
function THTMLDocument.CreateBodyElement: THTMLBodyElement;
|
||||
begin
|
||||
Result := THTMLBodyElement.Create(Self);
|
||||
|
Loading…
Reference in New Issue
Block a user