我知道有很多关于它的讨论,但我无法找到解决我自己问题的方法。
目前我想在使用C#WebBrowser控件时注入所有页面,包括iframe或框架甚至iframe的iframe。例如,我想注入脚本,例如在页面显示之前发出警报(“你好”)。
只有主页时很容易。
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
WebBrowser curWebBrowser = (WebBrowser)sender;
HtmlElement head = curWebBrowser.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = curWebBrowser.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text ="alert('hello');";
head.AppendChild(scriptEl);
}
但是当将脚本注入所有页面时,我发现我不知道在导航事件中导航了哪个iframe。
有e.URL所以我知道它的主要页面。但是没有我能找到的更多信息。
目前,我遍历e.URL过滤的浏览器中的所有帧(有时两个iframe具有相同的URL),并尝试避免页面重复执行脚本。但我认为我所做的事实上是非常愚蠢的,因为iframes中的页面会在“显示”页面之后发出警告信息,所以它完全不起作用。
还有更好的建议吗?