/// <summary> /// Dereferences a child element (use when removing any child). /// </summary> /// <param name="node">The node to be removed.</param> internal override void DereferenceNode(Node node) { base.DereferenceNode(node); if (node is Element) { if (node is HTMLFormElement) { var form = (HTMLFormElement)node; _forms.Remove(form); } else if (node is HTMLImageElement) { var img = (HTMLImageElement)node; _images.Remove(img); } else if (node is HTMLScriptElement) { var script = (HTMLScriptElement)node; _scripts.Remove(script); } else if (_body == node) { _body = FindChild <HTMLBodyElement>(_documentElement); } else if (_head == node) { _head = FindChild <HTMLHeadElement>(_documentElement); } else if (_title == node) { _title = FindChild <HTMLTitleElement>(_head); } } }
/// <summary> /// References a child element (use when adding any child). /// </summary> /// <param name="node">The node to be added.</param> internal override void ReferenceNode(Node node) { base.ReferenceNode(node); if (node is Element) { if (node is HTMLFormElement) { var form = (HTMLFormElement)node; _forms.Add(form); } else if (node is HTMLImageElement) { var img = (HTMLImageElement)node; _images.Add(img); } else if (node is HTMLScriptElement) { var script = (HTMLScriptElement)node; _scripts.Add(script); } else if (_body == null && node is HTMLBodyElement) { _body = (HTMLBodyElement)node; } else if (_head == null && node is HTMLHeadElement) { _head = (HTMLHeadElement)node; } else if (_title == null && node is HTMLTitleElement) { _title = (HTMLTitleElement)node; } } }
/// <summary> /// References a child element (use when adding any child). /// </summary> /// <param name="node">The node to be added.</param> internal override void ReferenceNode(Node node) { base.ReferenceNode(node); if (node is Element) { if (node is HTMLFormElement) { var form = (HTMLFormElement)node; forms.Add(form); } else if (node is HTMLImageElement) { var img = (HTMLImageElement)node; images.Add(img); } else if (node is HTMLScriptElement) { var script = (HTMLScriptElement)node; scripts.Add(script); } else if (body == null && node is HTMLBodyElement) { body = (HTMLBodyElement)node; } else if (head == null && node is HTMLHeadElement) { head = (HTMLHeadElement)node; } else if (title == null && node is HTMLTitleElement) { title = (HTMLTitleElement)node; } } }
/// <summary> /// Dereferences a child element (use when removing any child). /// </summary> /// <param name="node">The node to be removed.</param> internal override void DereferenceNode(Node node) { base.DereferenceNode(node); if (node is Element) { if (node is HTMLFormElement) { var form = (HTMLFormElement)node; forms.Remove(form); } else if (node is HTMLImageElement) { var img = (HTMLImageElement)node; images.Remove(img); } else if (node is HTMLScriptElement) { var script = (HTMLScriptElement)node; scripts.Remove(script); } else if (body == node) { body = FindChild<HTMLBodyElement>(documentElement); } else if (head == node) { head = FindChild<HTMLHeadElement>(documentElement); } else if (title == node) { title = FindChild<HTMLTitleElement>(head); } } }
public void HtmlHasRightBodyElement() { var doc = new HTMLDocument(); var root = new HTMLHtmlElement(); doc.AppendChild(root); var body = new HTMLBodyElement(); root.AppendChild(body); Assert.AreEqual(body, doc.Body); }
/// <summary> /// Act as if a body start tag has been found in the AfterHead state. /// </summary> /// <param name="token"></param> void AfterHeadStartTagBody(HtmlTagToken token) { var element = new HTMLBodyElement(); AddElementToCurrentNode(element, token); frameset = false; insert = HtmlTreeMode.InBody; }