Я считаю, что самый простой способ внедрить Javascript в HTML-документ WebBrowser Control из c # - это вызвать метод "execStrip" с кодом, который должен быть введен в качестве аргумента.
В этом примере код javascript внедряется и выполняется в глобальной области видимости:
var jsCode="alert('hello world from injected code');";
WebBrowser.Document.InvokeScript("execScript", new Object[] { jsCode, "JavaScript" });
Если вы хотите отложить выполнение, внедрить функции и вызвать их после:
var jsCode="function greet(msg){alert(msg);};";
WebBrowser.Document.InvokeScript("execScript", new Object[] { jsCode, "JavaScript" });
...............
WebBrowser.Document.InvokeScript("greet",new object[] {"hello world"});
Это действительно для элементов управления Windows Forms и WPF WebBrowser.
Это решение не является кросс-браузерным, потому что "execScript" определен только в IE и Chrome. Но вопрос касается элементов управления Microsoft WebBrowser, и поддерживается только IE.
Чтобы допустимый кросс-браузерный метод вставил код JavaScript, создайте объект Function с новым ключевым словом. В этом примере создается анонимная функция с внедренным кодом и выполняется ее (javascript реализует замыкания, а функция имеет доступ к глобальному пространству без загрязнения локальной переменной).
var jsCode="alert('hello world');";
(new Function(code))();
Конечно, вы можете отложить выполнение:
var jsCode="alert('hello world');";
var inserted=new Function(code);
.................
inserted();
Надеюсь, это поможет