如何调用MSHTML中的脚本

我正在使用axWebBrowser,我需要做一个脚本的工作,当select的列表框的项目更改时工作。

在默认webBrowser控制有一种方法,如;

WebBrowserEx1.Document.InvokeScript("script") 

但在axWebBrowser我不能工作任何脚本! 并没有关于这个控制的文件。

任何人都知道?

迟到的答案,但希望仍然可以帮助某人。 使用WebBrowser ActiveX控件时有很多方法可以调用脚本。 WinForms版本的WebBrowser控件(通过webBrowser.HtmlDocument.DomDocument )和WPF版本(通过webBrowser.Document )也可以使用相同的技术:

 void CallScript(SHDocVw.WebBrowser axWebBrowser) { // // Using C# dynamics, which maps to COM's IDispatch::GetIDsOfNames, // IDispatch::Invoke // dynamic htmlDocument = axWebBrowser.Document; dynamic htmlWindow = htmlDocument.parentWindow; // make sure the web page has at least one <script> tag for eval to work htmlDocument.body.appendChild(htmlDocument.createElement("script")); // can call any DOM window method htmlWindow.alert("hello from web page!"); // call a global JavaScript function, eg: // <script>function TestFunc(arg) { alert(arg); }</script> htmlWindow.TestFunc("Hello again!"); // call any JavaScript via "eval" var result = (bool)htmlWindow.eval("(function() { return confirm('Continue?'); })()"); MessageBox.Show(result.ToString()); // // Using .NET reflection: // object htmlWindowObject = GetProperty(axWebBrowser.Document, "parentWindow"); // call a global JavaScript function InvokeScript(htmlWindowObject, "TestFunc", "Hello again!"); // call any JavaScript via "eval" result = (bool)InvokeScript(htmlWindowObject, "eval", "(function() { return confirm('Continue?'); })()"); MessageBox.Show(result.ToString()); } static object GetProperty(object callee, string property) { return callee.GetType().InvokeMember(property, BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.Public, null, callee, new Object[] { }); } static object InvokeScript(object callee, string method, params object[] args) { return callee.GetType().InvokeMember(method, BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, callee, args); } 

JavaScript的eval必须至less有一个<script>标签才能工作,可以像上面那样注入。

或者,JavaScript引擎可以asynchronous初始化为webBrowser.Document.InvokeScript("setTimer", new[] { "window.external.notifyScript()", "1" })webBrowser.Navigate("javascript:(window.external.notifyScript(), void(0))")