0

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

目前,我想在使用 C# WebBrowser Control 时注入所有页面,包括 iframe 或框架甚至 iframe 的 iframe。例如,我想在页面显示之前注入脚本,例如 alert("hello")。

当只有一个主页时,这很容易。

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);
}

但是当发生将脚本注入所有页面时,我发现我不知道在 Navigated Event 中导航的是哪个 iframe。

有 e.URL 所以我知道它的主页与否。但是我找不到更多信息。

目前,我遍历浏览器中由 e.URL 过滤的所有帧(有时两个 iframe 具有相同的 URL),并尽量避免页面重复执行脚本。但是我认为我所做的真的很愚​​蠢,并且它不能完全工作,因为 iframe 中的页面会在显示页面“之后”发出警报消息。

有没有更好的建议?

4

0 回答 0