您的位置:首页 > Web前端 > CSS

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

2016-09-02 14:40 148 查看
向已加载的页面中注入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;
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: