/// <summary>Creates and inserts a new row.</summary> public HtmlElement insertRow(int index) { HtmlElement e = document.createElement("tr") as HtmlElement; if (index != -1) { // Get the row at that index: Element r = getRow(index); if (r != null) { // Insert before it: r.parentNode.insertBefore(e, r); return(e); } } // Insert as last tbody: HTMLCollection bodies = tBodies; Node body = (bodies.length == 0) ? appendChild(document.createElement("tbody")) : bodies[bodies.length - 1]; // append to that: body.appendChild(e); return(e); }
private static List <Code> GetEmbeddedKKScripts(Document dom, Guid objectId, byte constType) { List <Code> ScriptList = new List <Code>(); HTMLCollection embedScript = dom.getElementsByTagName("script"); int itemindexcounter = 0; foreach (var item in embedScript.item) { if (!item.hasAttribute("src")) { if (Kooboo.Sites.Render.Components.Manager.IsKScript(item)) { string scripttext = item.InnerHtml; if (string.IsNullOrEmpty(scripttext)) { continue; } Code script = new Code(); script.OwnerObjectId = objectId; script.OwnerConstType = constType; script.ItemIndex = itemindexcounter; script.IsEmbedded = true; script.CodeType = CodeType.PageScript; script.Body = scripttext; script.Engine = item.getAttribute("engine"); ScriptList.Add(script); } } itemindexcounter += 1; } return(ScriptList); }
/// <summary>Gets all child elements with the given tag.</summary> /// <param name="selector">The selector string to match.</param> /// <returns>The set of all tags with this tag.</returns> public HTMLCollection querySelectorAll(string selector, bool one) { // Create results set: HTMLCollection results = new HTMLCollection(); if (string.IsNullOrEmpty(selector)) { // Empty set: return(results); } // Create the lexer: Css.CssLexer lexer = new Css.CssLexer(selector, this); // Read a value: Css.Value value = lexer.ReadValue(); // Read the selectors from the value: List <Selector> selectors = new List <Selector>(); Css.CssLexer.ReadSelectors(null, value, selectors); // Create a blank event to store the targets, if any: CssEvent e = new CssEvent(); // Perform the selection process: querySelectorAll(selectors.ToArray(), results, e, false); return(results); }
internal static List <Element> FindElementsByDepth(Document doc, int depth) { HTMLCollection collection = new HTMLCollection(); _FindByDepth(doc.documentElement, depth, ref collection); return(collection.item.ToList()); }
public void getWrongNestedTags(Node topElement, HTMLCollection col) { if (topElement.nodeType == enumNodeType.ELEMENT) { Element element = (Element)topElement; if (element != null) { bool isInline = inline.Contains(element.tagName.ToLower()); if (isInline) { foreach (var item in element.childNodes.item) { getWrongBlockTags(item, col); } } else { foreach (var item in element.childNodes.item) { getWrongNestedTags(item, col); } } } } }
private static List <Style> GetEmbeddedStyles(Document dom, Guid objectId, byte constType) { List <Style> stylelist = new List <Style>(); HTMLCollection embedStyle = dom.getElementsByTagName("style"); int itemindexcounter = 0; foreach (var item in embedStyle.item) { Style style = new Style(); style.OwnerObjectId = objectId; style.OwnerConstType = constType; style.ItemIndex = itemindexcounter; style.Body = item.InnerHtml; style.IsEmbedded = true; style.media = item.getAttribute("media"); style.Engine = item.getAttribute("engine"); if (!string.IsNullOrWhiteSpace(style.Engine)) { style.Extension = style.Engine; } stylelist.Add(style); itemindexcounter += 1; } return(stylelist); }
public HTMLCollection GetElementsByName(String name) { var result = new HTMLCollection(); GetElementsByName(_children, name, result); return(result); }
/// <summary> /// Creates a new Html document. /// </summary> internal HTMLDocument() { _ns = Namespaces.Html; forms = new HTMLCollection(); scripts = new HTMLCollection(); images = new HTMLCollection(); }
//Internal for now until connected properly. //[DOM("onabort")] //internal event EventHandler OnAbort; //[DOM("onblur")] //internal event EventHandler OnBlur; //[DOM("oncanplay")] //internal event EventHandler OnCanPlay; //[DOM("oncanplaythrough")] //internal event EventHandler OnCanPlayThrough; //[DOM("onchange")] //internal event EventHandler OnChange; //[DOM("onclick")] //internal event EventHandler OnClick; //[DOM("oncontextmenu")] //internal event EventHandler OnContextMenu; //[DOM("oncopy")] //internal event EventHandler OnCopy; //[DOM("oncuechange")] //internal event EventHandler OnCueChange; //[DOM("oncut")] //internal event EventHandler OnCut; //[DOM("ondblclick")] //internal event EventHandler OnDblClick; //[DOM("onaondragbort")] //internal event EventHandler OnDrag; //[DOM("ondragend")] //internal event EventHandler OnDragEnd; //[DOM("ondragenter")] //internal event EventHandler OnDragEnter; //[DOM("ondragleave")] //internal event EventHandler OnDragLeave; //[DOM("ondragover")] //internal event EventHandler OnDragOver; //[DOM("ondragstart")] //internal event EventHandler OnDragStart; //[DOM("ondrop")] //internal event EventHandler OnDrop; //[DOM("ondurationchange")] //internal event EventHandler OnDurationChange; //[DOM("onemptied")] //internal event EventHandler OnEmptied; //[DOM("onended")] //internal event EventHandler OnEnded; //[DOM("onerror")] //internal event EventHandler OnError; //[DOM("onfocus")] //internal event EventHandler OnFocus; //[DOM("onfocusin")] //internal event EventHandler OnFocusIn; //[DOM("onfocusout")] //internal event EventHandler OnFocusOut; //[DOM("onfullscreenchange")] //internal event EventHandler OnFullScreenChange; //[DOM("onfullscreenerror")] //internal event EventHandler OnFullScreenError; //[DOM("oninput")] //internal event EventHandler OnInput; //[DOM("oninvalid")] //internal event EventHandler OnInvalid; //[DOM("onkeydown")] //internal event EventHandler OnKeyDown; //[DOM("onkeypress")] //internal event EventHandler OnKeyPress; //[DOM("onkeyup")] //internal event EventHandler OnKeyUp; //[DOM("onload")] //internal event EventHandler OnLoad; //[DOM("onloadeddata")] //internal event EventHandler OnLoadedData; //[DOM("onloadedmetadata")] //internal event EventHandler OnLoadedMetaData; //[DOM("onloadstart")] //internal event EventHandler OnLoadStart; //[DOM("onmousedown")] //internal event EventHandler OnMouseDown; //[DOM("onmousemove")] //internal event EventHandler OnMouseMove; //[DOM("onmouseout")] //internal event EventHandler OnMouseOut; //[DOM("onmouseover")] //internal event EventHandler OnMouseOver; //[DOM("onmouseup")] //internal event EventHandler OnMouseUp; //[DOM("onmousewheel")] //internal event EventHandler OnMouseWheel; //[DOM("onpaste")] //internal event EventHandler OnPaste; //[DOM("onpause")] //internal event EventHandler OnPause; //[DOM("onplay")] //internal event EventHandler OnPlay; //[DOM("onplaying")] //internal event EventHandler OnPlaying; //[DOM("onprogress")] //internal event EventHandler OnProgress; //[DOM("onratechange")] //internal event EventHandler OnRateChange; //[DOM("onreset")] //internal event EventHandler OnReset; //[DOM("onscroll")] //internal event EventHandler OnScroll; //[DOM("onseeked")] //internal event EventHandler OnSeeked; //[DOM("onseeking")] //internal event EventHandler OnSeeking; //[DOM("onselect")] //internal event EventHandler OnSelect; //[DOM("onstalled")] //internal event EventHandler OnStalled; //[DOM("onsubmit")] //internal event EventHandler OnSubmit; //[DOM("onsuspend")] //internal event EventHandler OnSuspend; //[DOM("ontimeout")] //internal event EventHandler OnTimeOut; //[DOM("ontimeupdate")] //internal event EventHandler OnTimeUpdate; //[DOM("ontouchcancel")] //internal event EventHandler OnTouchCancel; //[DOM("ontouchend")] //internal event EventHandler OnTouchEnd; //[DOM("ontouchmove")] //internal event EventHandler OnTouchMove; //[DOM("ontouchstart")] //internal event EventHandler OnTouchStart; //[DOM("onvolumechange")] //internal event EventHandler OnVolumeChange; //[DOM("onwaiting")] //internal event EventHandler OnWaiting; #endregion #region ctor /// <summary> /// Creates a new Html document. /// </summary> internal HTMLDocument() { _contentType = MimeTypes.Xml; _ns = Namespaces.Html; _all = new HTMLCollection(this); _queue = new Task(() => { }); }
internal HTMLMapElement() { _name = Tag; _areas = new List <Element>(); _images = new List <Element>(); Areas = new HTMLCollection(_areas); Images = new HTMLCollection(_images); }
/// <summary> /// Creates a new Html document. /// </summary> internal HTMLDocument() { _contentType = MimeTypes.Xml; _ns = Namespaces.Html; _forms = new HTMLCollection(); _scripts = new HTMLCollection(); _images = new HTMLCollection(); }
/// <summary> /// Creates a new Html document. /// </summary> internal HTMLDocument() { _contentType = MimeTypes.Xml; _ns = Namespaces.Html; _forms = new HTMLCollection(); _scripts = new HTMLCollection(); _images = new HTMLCollection(); }
public static List <Element> ToList(HTMLCollection c) { var l = new List <Element>(); for (uint i = 0; i < c.length; i++) { l.Add(c.item(i)); } return(l); }
/// <summary>Gets the first element which matches the given selector.</summary> public Element querySelector(string selector) { HTMLCollection results = querySelectorAll(selector, true); if (results == null || results.length == 0) { return(null); } return(results[0] as Element); }
void RenderList(HTMLCollection children, List list) { foreach (var child in children) { if (child.TagName == "li") { var li = new ListItem(); var section = new Section(); li.Blocks.Add(section); Render(child, section); list.ListItems.Add(li); } } }
public static Element GetEmbeddedByItemIndex(Document dom, int itemindex, string tagName) { HTMLCollection embedStyle = dom.getElementsByTagName(tagName); int itemindexcounter = 0; foreach (var item in embedStyle.item) { if (itemindexcounter == itemindex) { return(item); } itemindexcounter += 1; } return(null); }
/// <summary>Gets a submit button. Null if none were found.</summary> public HtmlElement GetSubmitButton() { // Get all inputs: HTMLCollection allInputs = getElementsByTagName("input"); // Are any a submit? foreach (Element element in allInputs) { if (element.getAttribute("type") == "submit") { return(element as HtmlElement); } } return(null); }
/// <summary> /// Gets a list of HTML elements given by their name attribute. /// </summary> /// <param name="children">The list to investigate.</param> /// <param name="name">The name attribute's value.</param> /// <param name="result">The result collection.</param> void GetElementsByName(NodeList children, String name, HTMLCollection result) { for (int i = 0; i < _children.Length; i++) { if (_children[i] is HTMLElement) { var element = (HTMLElement)_children[i]; if (element.GetAttribute("name") == name) { result.Add(element); } GetElementsByName(element.ChildNodes, name, result); } } }
public override Object NamedItem(String name) { var result = new HTMLCollection(); for (int i = 0; i < _entries.Count; i++) { if (_entries[i].Id == name || _entries[i].GetAttribute("name") == name) result.Add(_entries[i]); } if (result.Length == 0) return null; else if (result.Length == 1) return result[0]; return result; }
internal override void start() { // Pause it now! Timeline tl = track.timeline; tl.setPause(true); if (tl.backwards) { tl.currentTime = 1f - computedStart; } else { tl.currentTime = computedStart; } // Hook up cue elements now: HTMLCollection targs = cuedBy; if (targs != null && eventName != null) { foreach (Element e in targs) { Dom.EventListener <Dom.Event> d = new Dom.EventListener <Dom.Event>(delegate(Dom.Event ev){ // Cued by the cue point! element.cue(); }); CueElementData ced = new CueElementData(eventName, d, e); // Add to a list on the timeline: if (track.timeline.cueElements == null) { track.timeline.cueElements = new List <CueElementData>(); } track.timeline.cueElements.Add(ced); // Add listener: e.addEventListener(eventName, d); } } base.start(); }
public static void ComputeEmbed(Document doc, SiteDb sitedb, Guid objectId, byte constType) { HTMLCollection embedElement = doc.getElementsByTagName("embed"); List <string> UrlList = new List <string>(); foreach (var item in embedElement.item) { string fileurl = DomUrlService.GetLinkOrSrc(item); if (string.IsNullOrEmpty(fileurl)) { continue; } UrlList.Add(fileurl); } ComputeUrlRelation(sitedb, objectId, constType, UrlList, ConstObjectType.File); }
public void CheckEmptyTag(SiteObject siteobject, Kooboo.Dom.Document dom) { if (siteobject == null || dom == null) { return; } string name = Hardcoded.GetValue("Empty tag", session.context); HTMLCollection col = new HTMLCollection(); getEmptyTag(dom.body, col); foreach (var item in col.item) { string message = HttpUtility.HtmlEncode(item.OuterHtml); message += DiagnosisHelper.DisplayUsedBy(session.context, siteobject); session.AddMessage(name, message, MessageType.Warning); } }
/// <summary> /// process the embedded style. /// </summary> /// <param name="context"></param> private void ProcessInPage(AnalyzerContext context) { HTMLCollection embedStyle = context.Dom.getElementsByTagName("style"); //int itemindexcounter = 0; foreach (var item in embedStyle.item) { string csstext = item.InnerHtml; if (string.IsNullOrEmpty(csstext)) { continue; } //var style = new Style //{ // IsEmbedded = true, // OwnerObjectId = context.ObjectId, // OwnerConstType = context.ObjectType, // ItemIndex = itemindexcounter, // Name = UrlHelper.FileName(context.AbsoluteUrl) //}; CssManager.ProcessResource(ref csstext, context.AbsoluteUrl, context.DownloadManager, context.ObjectId); //style.Body = csstext; //context.SiteDb.Styles.AddOrUpdate(style, context.DownloadManager.UserId); //itemindexcounter += 1; if (item.InnerHtml != csstext) { var change = new AnalyzerUpdate() { StartIndex = item.location.openTokenEndIndex + 1, EndIndex = item.location.endTokenStartIndex - 1, NewValue = csstext }; if (change.EndIndex > change.StartIndex) { context.Changes.Add(change); } } } }
public void CheckWrongNestedTag(SiteObject siteobject, Kooboo.Dom.Document dom) { if (siteobject == null || dom == null) { return; } string name = Hardcoded.GetValue("Wrong nested tag", session.context); HTMLCollection col = new HTMLCollection(); getWrongNestedTags(dom.body, col); foreach (var item in col.item) { string message = GetTagInfo(item); message += DiagnosisHelper.DisplayUsedBy(session.context, siteobject); session.AddMessage(name, message, MessageType.Warning); } }
private void ProcessExternal(AnalyzerContext Context) { HTMLCollection styletags = Context.Dom.getElementsByTagName("link"); foreach (var item in styletags.item) { if (item.hasAttribute("rel") && item.getAttribute("rel").ToLower().Contains("stylesheet")) { string itemurl = Service.DomUrlService.GetLinkOrSrc(item); if (!string.IsNullOrEmpty(itemurl)) { /// itemurl = TransferHelper.TrimQuestionMark(itemurl); string absoluteUrl = UrlHelper.Combine(Context.AbsoluteUrl, itemurl); bool issamehost = UrlHelper.isSameHost(Context.OriginalImportUrl, absoluteUrl); string relativeurl = UrlHelper.RelativePath(absoluteUrl, issamehost); if (itemurl != relativeurl) { string oldstring = Kooboo.Sites.Service.DomService.GetOpenTag(item); string newstring = oldstring.Replace(itemurl, relativeurl); Context.Changes.Add(new AnalyzerUpdate() { StartIndex = item.location.openTokenStartIndex, EndIndex = item.location.openTokenEndIndex, NewValue = newstring }); } Context.DownloadManager.AddTask(new Download.DownloadTask() { AbsoluteUrl = absoluteUrl, RelativeUrl = relativeurl, ConstType = ConstObjectType.Style, OwnerObjectId = Context.ObjectId }); } } } }
private static void _FindByDepth(Node topEl, int depth, ref HTMLCollection col) { if (topEl.nodeType == enumNodeType.ELEMENT) { var el = topEl as Element; if (el.depth == depth) { col.Add(el); } else if (topEl.depth < depth) { foreach (var item in topEl.childNodes.item) { _FindByDepth(item, depth, ref col); } } } }
/// <summary> /// compute html tag inline css. /// </summary> /// <param name="doc"></param> /// <param name="sitedb"></param> /// <param name="objectId"></param> /// <param name="constType"></param> public static void ComputeInlineCss(Document doc, SiteDb sitedb, Guid objectId, byte constType, string baseurl) { HTMLCollection elements = doc.getElementByAttribute("style"); List <CmsCssRule> cmsrules = new List <CmsCssRule>(); foreach (var item in elements.item) { string style = item.getAttribute("style"); if (!string.IsNullOrEmpty(style)) { CmsCssRule rule = new CmsCssRule(); rule.OwnerObjectId = objectId; rule.OwnerObjectConstType = constType; rule.IsInline = true; rule.CssText = style; rule.KoobooId = Service.DomService.GetKoobooId(item); rule.KoobooOpenTag = Service.DomService.GetOpenTag(item); rule.DisplayName = Service.DomService.GetElementDisplayName(item); var decls = Kooboo.Dom.CSS.CSSSerializer.deserializeDeclarationBlock(style); rule.Properties = decls.item.Select(o => o.propertyname).ToList(); cmsrules.Add(rule); } } /// get old relation. List <CmsCssRule> oldrules = sitedb.CssRules.Query.Where(o => o.OwnerObjectId == objectId && o.IsInline).SelectAll(); foreach (var item in oldrules) { if (!cmsrules.Where(o => o.Id == item.Id).Any()) { sitedb.CssRules.Delete(item.Id, false); } } foreach (var item in cmsrules) { sitedb.CssRules.AddOrUpdate(item, default(Guid), false); Relation.CmsCssRuleRelation.ComputeUrl(item, baseurl, sitedb); } }
private void getEmptyTag(Node topElement, HTMLCollection collection) { if (topElement.nodeType == enumNodeType.ELEMENT) { Element element = (Element)topElement; if (IsEmptyTag(element)) { collection.Add(element); } else { foreach (var item in topElement.childNodes.item) { getEmptyTag(item, collection); } } } }
private void getTooDepthElements(Node topElement, HTMLCollection collection) { if (topElement.nodeType == enumNodeType.ELEMENT) { Element element = (Element)topElement; if (element.depth >= 12) { collection.Add(element); } else { foreach (var item in topElement.childNodes.item) { getTooDepthElements(item, collection); } } } }
public void CheckDepth(SiteObject siteobject, Kooboo.Dom.Document dom) { if (siteobject == null || dom == null) { return; } string name = Hardcoded.GetValue("Element too deep", session.context); HTMLCollection col = new HTMLCollection(); getTooDepthElements(dom.documentElement, col); foreach (var item in col.item) { string message = GetTagInfo(item); message += DiagnosisHelper.DisplayUsedBy(session.context, siteobject); session.AddMessage(name, message, MessageType.Warning); } }
public void getOutdateTags(Node topElement, HTMLCollection collection) { if (topElement.nodeType == enumNodeType.ELEMENT) { Element element = (Element)topElement; if (element != null) { if (element.tagName != null && outdatetags.Contains(element.tagName.ToLower())) { collection.Add(element); } foreach (var item in topElement.childNodes.item) { getOutdateTags(item, collection); } } } }
public static HTMLCollection GetElementsByTagName(List <Node> nodelist, string tagName) { HTMLCollection cols = new HTMLCollection(); foreach (var item in nodelist) { if (item is Element) { Element e = item as Element; var col = e.getElementsByTagName(tagName).item; if (col != null && col.Count > 0) { cols.item.AddRange(col); } } } return(cols); }
/// <summary> /// Get all external style urls /// </summary> /// <param name="dom"></param> /// <param name="pageOrBaseUrl"></param> /// <returns></returns> public static List <string> GetAllExternalStyleUrls(Document dom, string pageOrBaseUrl) { List <string> urlList = new List <string>(); HTMLCollection styletags = dom.getElementsByTagName("link"); foreach (var item in styletags.item) { if (item.hasAttribute("rel") && item.getAttribute("rel").ToLower().Contains("stylesheet")) { string itemurl = item.getAttribute("href"); if (!string.IsNullOrEmpty(item.getAttribute("href"))) { string url = UrlHelper.Combine(pageOrBaseUrl, itemurl); urlList.Add(url); } } } return(urlList); }
public HTMLCollection getElementsByClassName(string classNames) { HTMLCollection elments = new HTMLCollection(); foreach (var child in childNodes) { if ((child as Element).className.NoncaseEqual(classNames)) { elments.Add(child as Element); } elments.AddRange((child as Element).getElementsByClassName(classNames)); } return elments; }
public HTMLCollection getElementsByTagNameNS(string nspace, string localName) { HTMLCollection elments = new HTMLCollection(); foreach (Node child in childNodes) { if (child.nodeName.NoncaseEqual(localName) && (child as Element).namespaceURI.NoncaseEqual(nspace)) { elments.Add(child as Element); } elments.AddRange((child as Element).getElementsByTagNameNS(nspace, localName)); } return elments; }
internal HTMLMapElement() { _name = Tag; areas = new HTMLCollection(); images = new HTMLCollection(); }
/// <summary> /// Gets a list of HTML elements given by their name attribute. /// </summary> /// <param name="children">The list to investigate.</param> /// <param name="name">The name attribute's value.</param> /// <param name="result">The result collection.</param> void GetElementsByName(NodeList children, String name, HTMLCollection result) { for (int i = 0; i < _children.Length; i++) { if (_children[i] is HTMLElement) { var element = (HTMLElement)_children[i]; if (element.GetAttribute("name") == name) result.Add(element); GetElementsByName(element.ChildNodes, name, result); } } }
public HTMLCollection GetElementsByName(String name) { var result = new HTMLCollection(); GetElementsByName(_children, name, result); return result; }
void RenderList(HTMLCollection children, List list) { foreach (var child in children) { if (child.TagName == "li") { var li = new ListItem(); var section = new Section(); li.Blocks.Add(section); Render(child, section); list.ListItems.Add(li); } } }