1, Parser开始于HTMLDocumentParser的构造
HTMLDocumentParser::HTMLDocumentParser(HTMLDocument* document, bool reportErrors)
HTMLParserScheduler::create(this) // 设置触发器
&HTMLParserScheduler::continueNextChunkTimerFired
m_parser->resumeParsingAfterYield();
pumpTokenizer
nextToken
-1->
processEntity
consumeHTMLEntity
-1-> constructTreeFromToken
constructTreeFromAtomicToken
processToken
2,Rendering的开始,HTMLTreeBuilder构造
HTMLTreeBuilder::HTMLTreeBuilder
m_tree.openElements()->pushRootNode(fragment);
pushRootNodeCommon(rootNode);
HTMLElementStack::pushCommon(PassRefPtr<ContainerNode> node)
topNode()->beginParsingChildren();
attached()
createRendererIfNeeded();
createRendererAndStyle
createRenderer(document()->renderArena(), style.get());
newRenderer->setAnimatableStyle(style.release());
setStyle(style);
本文介绍了HTML文档解析过程,从HTMLDocumentParser的构造开始,涉及Parser调度、Token生成及实体处理等步骤。同时,还详细阐述了HTML文档的渲染流程,包括HTMLTreeBuilder的构造、节点解析与渲染器创建等关键环节。
605

被折叠的 条评论
为什么被折叠?



