GeckoFx (2)向已加载的页面中注入 css 和 js
来源:互联网 发布:mac查看硬盘使用情况 编辑:程序博客网 时间:2024/06/05 08:13
向已加载的页面中注入js、css,在页面加载完后执行自定义的脚本,点击页面元素展示修改元素的边框颜色。
使用 browser_Load 事件在页面加载完成时注入脚本。
使用 browser_Load 事件在页面加载完成时注入脚本。
使用 DomClick 事件,修改触发元素的样式。
初始化组件:public void InitFrm(){this.WindowState = FormWindowState.Maximized;Xpcom.Initialize(xulrunnerPath);browser = new Gecko.GeckoWebBrowser(); browser.Parent = this;browser.Dock = DockStyle.Fill;browser.Navigate("http://blog.csdn.net/xxj_jing");panelBottom.Height = 300;browser.Load += browser_Load;browser.DomClick += browser_DomClick;}private bool _load = false;/// <summary>/// 加载文档/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void browser_Load(object sender, DomEventArgs e){if (!_load){InjectCss(browser.Document);InjectJs(browser.Document);}if (!_load) _load = true;}/// <summary>/// 注入样式/// </summary>public void InjectCss(GeckoDomDocument doc){var css = doc.CreateHtmlElement("style");css.InnerHtml = @".firefinder-match-red {outline: 2px dashed #f00 !important;}.firefinder-match-blue {outline: 2px dashed #00f !important;}";browser.Document.Head.AppendChild(css);}/// <summary>/// 注入脚本/// </summary>public void InjectJs(GeckoDomDocument doc){var js = doc.CreateHtmlElement("script");js.InnerHtml = "alert(1);";browser.Document.Head.AppendChild(js);}/// <summary>/// 文档单击事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void browser_DomClick(object sender, DomMouseEventArgs e){var ele = e.CurrentTarget.CastToGeckoElement();ele = e.Target.CastToGeckoElement();AddClass("firefinder-match-red", ele);}/// <summary>/// 添加样式/// </summary>public void AddClass(string className,params GeckoElement[] element){if (element != null && element.Length > 0){element.All(x =>{if (x == null)return true;var cls = x.GetAttribute("class");cls += " " + className;x.SetAttribute("class", cls);return true;});}}/// <summary>/// 移除样式/// </summary>public void RemoveClass(string className, params GeckoElement[] element){if (element != null && element.Length>0){element.All(x =>{if (x == null)return true;var cls = x.GetAttribute("class");if (!string.IsNullOrWhiteSpace(cls)){cls = cls.Replace(className, "").Trim();x.SetAttribute("class", cls);}return true;});}}
1 0
- GeckoFx (2)向已加载的页面中注入 css 和 js
- 向页面注入JS代码
- 页面加载后下载js和css
- JS注入CSS到页面
- 解决在thinkPhP中加载css和js的问题
- Django中加载js和css文件
- 对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析
- 在rails中不同的view不同皮肤下的js,css,注入js和css到head区域
- 页面js和css加载顺序优化建议
- yii2 如何在页面底部加载css和js
- [yii2]-- [view] -- 在页面底部加载css和js
- jqueryMobile 两个页面切换,第二个页面css样式没有加载的问题,已解决
- jqueryMobile 两个页面切换,第二个页面css样式没有加载的问题,已解决
- Javascript js中页面的重新加载
- Javascript js中页面的重新加载
- Javascript js中页面的重新加载
- silverlight中向页面输出内容和调js
- jsp页面无法加载css、js、图片的问题
- ADB 常用指令
- 多线程六------从任务中产生返回值-Callable接口
- leetcode Longest Substring with At Most K Distinct Characters
- CSS小结
- 基于CAP原理的ACID和BASE模型介绍
- GeckoFx (2)向已加载的页面中注入 css 和 js
- Servlet完全教程
- XXX is busy: Processing symbol files
- 自动对象序列化和网络数据解析,数据模型和字典的互转
- 王忠家:在Qt5中解决VC下的乱码问题
- Hive初识功能架构
- Java并发编程学习笔记之发布逸出
- Unity编译至Xcode工程后自动添加文件和库的方法
- QCustomPlot之布局系统