Пример #1
0
        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;
        }
Пример #2
0
 public JQueryFacade jQuery()
 {
     var returnObj = new JQueryFacade(_doc)
     {
         _nodes = new List<HtmlNodeFacade>
         {
         },
     };
     return returnObj;
 }
Пример #3
0
 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;
 }
Пример #4
0
 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;
     }
 }
Пример #5
0
 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;
 }