0

それについて多くの議論があることは知っていますが、私自身の問題の解決策を見つけることができません。

現在、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アラートメッセージのページとして完全に機能しません。

より良い提案はありますか?

4

0 に答える 0