用mshtml获得Javascript中function的返回值

   今天琢磨了一下如何用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值