public static HtmlDocumentFacade ProcessServerSideScripts(this HtmlDocumentFacade doc) { var scripts = doc.getElementsByTagName("script"); var noSideScripts = scripts .Where(_TestForNoSide); var noSideScriptsList = noSideScripts.ToList(); noSideScriptsList.ForEach(node => { node.parentNode.removeChild(node); }); var serverSideScripts = scripts .Where(_TestForServerSide) .Where(_TestForRealScript) ; var sb = new StringBuilder(); //serverSideScripts = serverSideScripts.Where(node => string.IsNullOrEmpty(node.getAttribute(ModelAttribute))); var serverSideScriptsList = serverSideScripts.ToList(); serverSideScriptsList.ForEach(node => { string src = node.getAttribute("src"); if (string.IsNullOrEmpty(src)) { sb.AppendLine(node.innerHTML); } else { sb.AppendLine(doc.GetHostContent(src)); } if (!_TestForClientSide(node)) { node.parentNode.removeChild(node); } }); string script = sb.ToString(); if (script.Length > 0) { // Initialize a context script = sb.ToString(); using (var engine = new V8ScriptEngine()) { var jqueryFacade = new JQueryFacade(doc); engine.AddHostObject("console", new Console()); engine.AddHostObject("document", doc); engine.AddHostObject("jQueryServerSideFacade", jqueryFacade); engine.Execute("var " + modeParameter + "='server'"); if (doc.ProcessContext.Model != null) { engine.AddHostObject("model", doc.ProcessContext.Model); } engine.Execute(script); } } return doc; }
public JQueryFacade jQuery() { var returnObj = new JQueryFacade(_doc) { _nodes = new List<HtmlNodeFacade> { }, }; return returnObj; }
public JQueryFacade find(string selectorText) { var newNodes = new List<HtmlNodeFacade>(); if (_nodes != null) { foreach (var nd in _nodes) { newNodes.AddRange(nd.querySelectorAll(selectorText)); } } else { newNodes.AddRange(_doc.querySelectorAll(selectorText)); } var returnObj = new JQueryFacade(_doc) { _nodes = newNodes, }; return returnObj; }
public JQueryFacade jQuery(string selectorText) { if (selectorText.StartsWith("<")) { if (selectorText.Contains(" ")) { throw new NotImplementedException(); } string tag = selectorText.SubstringAfter("<").SubstringBeforeLast("/>"); if (tag.Contains("<")) { throw new NotImplementedException(); } //return new JQueryFacade(_doc) //{ // _nodes = new List<HtmlNodeFacade>{ // _doc.createElement(tag), // } //}; _nodes = new List<HtmlNodeFacade>{ _doc.createElement(tag), }; return this; } else { var returnObj = new JQueryFacade(_doc) { _nodes = _doc.querySelectorAll(selectorText) }; return returnObj; } }
public JQueryFacade append(JQueryFacade inner) { if (this._nodes == null) return this; if (inner._nodes == null) return this; foreach (var parentNode in this._nodes) { foreach (var childNode in inner._nodes) { parentNode.appendChild(childNode); } } return this; }