HtmlDocument の script タグの内容を書き換えたい

いろいろ試行錯誤したゴミコード。

        private void orixWb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            // sender は wb と同じインスタンスなので、見る必要はない。

            HtmlElement scriptElem = orixWb.Document.CreateElement("SCRIPT");
            scriptElem.SetAttribute("type", "text/javascript");
            scriptElem.SetAttribute("language", "javascript");
            scriptElem.SetAttribute("src", "http://example.com/focus.js");

            //HtmlElementCollection hec = orixWb.Document.GetElementsByTagName("HEAD");
            //hec[0].InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeBegin, scriptElem);

            HtmlElementCollection scriptElements = orixWb.Document.GetElementsByTagName("SCRIPT");
            scriptElements[4].InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeBegin, scriptElem);

            //HtmlElementCollection hec = orixWb.Document.GetElementsByTagName("script");
            //hec[2].SetAttribute("src", "http://example.com/focus.js");

            //    foreach (HtmlElement he in hec)
            //    {
            //        if (he.OuterHtml != null && he.OuterHtml.Contains("self.focus()"))
            //        {
            //            Console.WriteLine("removed: " + he.OuterHtml);
            //            //he.Document.Write("<script>window.alert(3);</script>");
            //            //he.Document.Write(he.Document.All[0].OuterHtml.Replace("self.focus()", "window.alert(4)"));
            //            //he.Document.Write(he.Document.All[0].OuterHtml.Replace("self.focus()", ""));
            //            //he.InnerHtml = "window.alert(4);";

            //            //orixWb.Document.OpenNew(true);
            //            //orixWb.Document.Write(he.Document.All[0].OuterHtml.Replace("self.focus()", "window.alert(4)"));

            //            //HtmlElement scriptElem = orixWb.Document.CreateElement("script");

            //            //HtmlElement scriptElem = he.Document.CreateElement("hoge");
            //            //scriptElem.SetAttribute("type", "text/abcdefjavascript");

            //            //scriptElem.InnerText = "window.alert(3)";
            //            //orixWb.Document.Body.AppendChild(scriptElem);

            //            //orixWb.Document.Body.AppendChild(scriptElem);

            //            //HtmlElementCollection bc = orixWb.Document.GetElementsByTagName("head");
            //            //bc[0].AppendChild(scriptElem);
            //            //orixWb.Document.Body.InnerHtml += "<script>window.alert(5)</script>";

            //            //HtmlElement x = orixWb.Document.CreateElement("input");
            //            //x.SetAttribute("name", "self");
            //            //x.SetAttribute("type", "text");
            //            //// x.SetAttribute("onchange", "javascript:window.alert(3)");
            //            //x.SetAttribute("value", "VBで追加したTextBox");
            //            //x.SetAttribute("size", "40");
            //            //x.Click += new HtmlElementEventHandler(x_Click);
            //          //  orixWb.Document.Body.AppendChild(x);

            //            //HtmlElement x = orixWb.Document.CreateElement("script");
            //            //x.SetAttribute("type", "text/javascript");
            //            //x.OuterHtml = "window.alert(3)";

            //            //HtmlElementCollection bc = orixWb.Document.GetElementsByTagName("body"); // これも効く
            //            //bc[0].AppendChild(x); // これも効く

            //            //orixWb.ScriptErrorsSuppressed = false;

            //            HtmlElementCollection y = orixWb.Document.GetElementsByTagName("script");
            //            y[3].SetAttribute("src", "http://example.com/focus.js");

            //            // y[0].SetAttribute("src", "http://example.com/focus.js");
            //            foreach (HtmlElement p in y)
            //            {
            //                //p.SetAttribute("src", "http://example.com/focus.js");

            //                //if (p.InnerHtml != null && p.InnerHtml.Contains("self.focus()"))
            //                //{
            //                //    p.SetAttribute("type", "text/xxvbscript");
            //                //    p.SetAttribute("language", "hoge");
            //                //    //p.SetAttribute("language", "vbscript");
            //                //    p.SetAttribute("src", "example.com/focus.js");
            //                //    object o = p.DomElement;
            //                //}
            //            }


            //            //orixWb.Document.Focusing += new HtmlElementEventHandler(Document_Focusing);

            //            //HtmlElementCollection bc = orixWb.Document.GetElementsByTagName("head");
            //            // bc[0].AppendChild(x);

            //            //orixWb.Document.OpenNew(true);
            //            //orixWb.Document.Write(he.Document.All[0].InnerHtml.Replace("self.focus()", "window.alert(4)"));
            //            break;
            //        }
            //        else
            //        {
            //        }
            //    }
            //}

            orixBrowser.DocumentCompleted(orixWb, e);

        }

なお、focus.js は、これに差し替えたい JavaScript のコード。内容はつぎのとおり。

function foo() {
    window.alert(789);
}

function Hoge_focus() {
}

function Hoge() {
    this.focus = Hoge_focus;
}

var self = new Hoge();

self という名前の変数を、自分のダミークラスに差し替えて、focus メソッドを無効にしたい。
HtmlDocument の差し替えにさえ成功すればうまく行くはずなのだが。