GeckoFx (2)向已加载的页面中注入 css 和 js

向已加载的页面中注入js、css,在页面加载完后执行自定义的脚本,点击页面元素展示修改元素的边框颜色。
使用 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;
		});
	}
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值