private async void LoadCssTimer_TickAsync(object sender, EventArgs e) { if (jsHandler.Click) { // User has clicked on an element in the browser, so handler class is signalling us int X = jsHandler.X; int Y = jsHandler.Y; jsHandler.Click = false; StylesList.Items.Clear(); Debug.Print($"Click at ({jsHandler.X},{jsHandler.Y})"); string S = await browserForm.ExecJSAsync($"(function() {{ return document.elementsFromPoint({X}, {Y}).length }})();"); string N; string ClassNames; int NumElements = Int32.Parse(S); for (int i = 0; i < NumElements; i++) { // S = await browserForm.ExecJSAsync($"(function() {{ return document.elementsFromPoint({X}, {Y})[{i}].attributes }})();"); N = await browserForm.ExecJSAsync($"(function() {{ return document.elementsFromPoint({X}, {Y})[{i}].nodeName }})();"); ClassNames = await browserForm.ExecJSAsync($"(function() {{ return document.elementsFromPoint({X}, {Y})[{i}].className }})();"); bool bFoundOne = false; foreach (string ClassName in ClassNames.Split(' ')) { foreach (StyleSheet SS in browserForm.StyleSheets) { if (!(SS.cssRules is null)) { StyleSheetRule SSR = SS.FindRuleByClass(ClassName); if (!(SSR is null)) { StylesList.Items.Add(SSR); bFoundOne = true; } } } } if (!bFoundOne) { StylesList.Items.Add($"[{i}]<{N}> {ClassNames}"); } // var x = event.clientX, y = event.clientY, // elementMouseIsOver = document.elementsFromPoint(x, y); /* * if (! (browserForm is null)) * { * if (browserForm.unPacked) * { * loadCssTimer.Enabled = false; * listBox1.Items.Clear(); * * foreach(StyleSheet S in browserForm.StyleSheets) * { * if (!(S.cssRules is null)) * { * foreach (StyleSheetRule SSR in S.cssRules) * { * if (!(SSR.selectorText is null)) * listBox1.Items.Add("" + S.index + "," + SSR.index + "," + SSR.selectorText); * } * } * } */ } } }