关闭

用mshtml获得Javascript中function的返回值

标签: javascriptfunction文档html.net搜索引擎
1094人阅读 评论(0) 收藏 举报
分类:

   今天琢磨了一下如何用mshtml获得Javascript中function的返回值。我们以前都是用没mshtml.IHTMLWindow2接口的execScript方法来执行HTML文档中的javascript代码段,如

 

 

    智能提示显示execScript方法的返回值类型是object,但是其实其返回值永远是null(当然,我们不应该相信COM的智能提示,很多参数、返回值等都是object类型,无法得到更详细的信息),即使该方法执行的是一个有返回值javascript函数。

    那么,这个问题如何解决呢?Google一下吧。简体中文的页面中没有这个问题的答案,看看英文的文档吧(这里说一句,很多人因为懒或者不会使用google等搜索引擎而错过了学习一些东西的机会。多用一下搜索引擎,考虑怎样使用关键词,并不断提高关键字的质量,相信很容易找到相应的资料)。输入“"javascript return value" +mshtml +c#”作为关键字,搜索结果只有一篇文档,要的就是它。这篇文档详细描述了如何在.NET应用程序中控制Internet Explorer,示例既有C#也有VB.NET,既有1.0也有2.0,非常棒(附在随笔的最后)。

    文档中给出了这个问题的解决方法,不过是.NET 2.0中的解决方法。.NET 2.0中的解决方法是利用HtmlDocument类的InvokeScript方法来实现:

 

 

    要注意的是,HTML文档中的javascript函数名后要加空括号(没有参数的情况下),而在C# 2.0中调用之则不用加空括号。

    在C# 1.x中使用mshtml如何解决这个问题呢,这里介绍一个变通的方法(这些变通的方法在以前的随笔中也用到过):
        1、在Form中定义变量用于存储javascript函数的返回值;
        2、使用.NET 1.x中的InteropServices把应用程序的Form对象传入到HTML DOM中;
        3、在javascript函数中为1中的变量赋值(赋和javascript函数返回值一样的值),这样javascript函数甚至不需要有返回值了。

    步骤2的代码如下:

 

 

    这样在步骤3的HTML文档的javascript函数中就可以用document.MainForm来指代Windows应用程序中的Form了。


转自http://www.cnblogs.com/waxdoll/archive/2007/06/30/271018.html,原文带有那篇英文原文附件,一定要看啊

0
0
查看评论

C# ActiveX调用JS函数

参考文档:http://blog.csdn.net/cds27/article/details/7533479 C# 在winform里调用WebBrowser控件里的脚本: IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Doc...
  • zengxin2008
  • zengxin2008
  • 2012-09-27 18:03
  • 1316

WinForm WebBrowser执行网页的中JavaScript函数

  • aiaitiantian
  • aiaitiantian
  • 2010-04-17 11:07
  • 1149

JavaScript与C# Windows应用程序交互(webBrowser方法)

一、建立网页 html> head>        meta http-equiv="Content-Language" content="zh-cn&quo...
  • zhuzhu837_1
  • zhuzhu837_1
  • 2012-07-27 15:39
  • 755

如何用mshtml获得Javascript中function的返回值[mshtml]

今天琢磨了一下如何用mshtml获得Javascript中function的返回值。我们以前都是用没mshtml.IHTMLWindow2接口的execScript方法来执行HTML文档中的javascript代码段,如 //awbMain为AxSHDocVw.AxWebBrowser控件...
  • jxufewbt
  • jxufewbt
  • 2007-09-11 20:59
  • 5139

如何用mshtml获得Javascript中function的返回值

今天琢磨了一下如何用mshtml获得Javascript中function的返回值。我们以前都是用没mshtml.IHTMLWindow2接口的execScript方法来执行HTML文档中的javascript代码段,如   //awbMain为AxSHDocVw.AxWebBrows...
  • zengxin2008
  • zengxin2008
  • 2012-10-10 11:24
  • 880

webBrowser页面js调用Winform窗体函数

winform代码:using System.Runtime.InteropServices;using System.Security.Permissions;[PermissionSet(SecurityAction.Demand, Name="FullTrust")][Sy...
  • lcheng1116
  • lcheng1116
  • 2010-12-18 09:56
  • 606

C# WinForm程序如何与js交互

一、建立网页     function messageBox(message){    alert(message);}           ...
  • nnsword
  • nnsword
  • 2010-03-24 16:27
  • 3829

Function-In-JavaScript 方法

概述函数就是一段预先设置的代码块,可以反复调用,根据输入参数的不同,返回不同的值。JavaScript有三种方法,可以声明一个函数。函数的声明(1)function命令function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函...
  • u010287117
  • u010287117
  • 2016-04-07 22:43
  • 361

JavaScript函数-带参数的函数、带返回值的参数

之前说完函数的定义以及调用,接下来看看带参数的函数以及带返回值的的函数~\(≧▽≦)/~   带参数的函数   之前讲了函数的基本用法,接下来看看带参数的函数。   在函数中,参数可以无限多,函数之间用 "," 隔开就好~   ...
  • jiongyixuan
  • jiongyixuan
  • 2015-12-12 14:15
  • 18904

在winform里怎么调用WebBrowser控件里的脚本

这是在CSDN论坛上的一个问题,感觉也许对其他人也会有点用处,所以贴出来JScript是建立在COM之上的,设置变量/调用函数是通过IDispatch来实现的。在.NET里,调用IDispatch里的方法是通过反射来实现的,即,通过System.Type.InvokeMember 。该方法调用 ID...
  • wooley
  • wooley
  • 2006-07-12 13:38
  • 660
    个人资料
    • 访问:303737次
    • 积分:3412
    • 等级:
    • 排名:第11667名
    • 原创:96篇
    • 转载:10篇
    • 译文:3篇
    • 评论:64条
    文章分类
    最新评论