それについて多くの議論があることは知っていますが、私自身の問題の解決策を見つけることができません。
現在、C# WebBrowser コントロールを使用する場合、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 でフィルター処理されたブラウザー内のすべてのフレームをトラバースし (2 つの iframe が同じ URL である場合があります)、ページがスクリプトを繰り返し実行しないようにしています。しかし、私がしていることは本当にばかげていると思います。ページが表示された「後に」iframesアラートメッセージのページとして完全に機能しません。
より良い提案はありますか?