private void UpdateDom(CefFrame frame) { var visitor = new DomVisitor(this); // Note: Call is async. Will at some point lead to OnVisitDom a few lines down. frame.VisitDom(visitor); }
protected override void OnLoadEnd(CefBrowser browser, CefFrame frame, int httpStatusCode) { lock (FRenderer.FLock) { FRenderer.FFrameLoadCount--; FRenderer.FErrorText = string.Empty; } if (frame.IsMain) { frame.VisitDom(new DomVisitor(FRenderer)); } base.OnLoadEnd(browser, frame, httpStatusCode); }
protected override bool OnProcessMessageReceived(CefBrowser browser, CefProcessId sourceProcess, CefProcessMessage message) { string[] items = message.Name.Split(new char[] { '|' }); if (items.Length == 0) { return(false); } switch (items[0]) { case "GetElementValue": { string elementID = items[1]; long[] frameIDs = browser.GetFrameIdentifiers(); foreach (long frameID in frameIDs) { CefFrame frame = browser.GetFrame(frameID); if (frame == null) { continue; } frame.VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsGetElementValue, elementID)); } browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsGetElementValue, elementID)); return(true); } case "SetElementValue": { string elementID = items[1]; string elementValue = items[2]; long[] frameIDs = browser.GetFrameIdentifiers(); foreach (long frameID in frameIDs) { CefFrame frame = browser.GetFrame(frameID); if (frame == null) { continue; } frame.VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsGetElementValue, elementID, elementValue)); } browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsSetElementValue, elementID, elementValue)); return(true); } case "EvaluateScript": { CefV8Value value = CefV8Value.CreateString("t"); CefV8Exception exp; browser.GetMainFrame().V8Context.TryEval(items[1], out value, out exp); Global.JsEvaResult = null; if (value.IsString) { Global.JsEvaResult = value.GetStringValue(); } if (value.IsInt) { Global.JsEvaResult = value.GetIntValue(); } if (value.IsDouble) { Global.JsEvaResult = value.GetDoubleValue(); } if (value.IsBool) { Global.JsEvaResult = value.GetBoolValue(); } if (value.IsDate) { Global.JsEvaResult = value.GetDateValue(); } Global.flag = true; return(true); } case "AppendListener": { CwbBusinStyle cbStyle = CwbBusinStyle.bsAddElementEvent; if (items.Length > 2) { cbStyle = CwbBusinStyle.bsAttachElementEvent; } string elementID = items[1]; long[] frameIDs = browser.GetFrameIdentifiers(); foreach (long frameID in frameIDs) { CefFrame frame = browser.GetFrame(frameID); if (frame == null) { continue; } frame.VisitDom(new CwbDOMVisitor(browser, cbStyle, webBrowser.getEventListener(elementID))); } browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, cbStyle, webBrowser.getEventListener(elementID))); return(true); } case "GetDocument": { browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsVisitDocument, "")); return(true); } } return(false); }