在使用C#WebBrowser控件时,如何将javascript注入包括iframe / frame在内的所有页面?

时间:2012-05-31 10:38:52

标签: c# javascript webbrowser-control

我知道有很多关于它的讨论,但我无法找到解决我自己问题的方法。

目前我想在使用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中的页面会在“显示”页面之后发出警告信息,所以它完全不起作用。

还有更好的建议吗?

0 个答案:

没有答案