当前位置:  开发笔记 > 编程语言 > 正文

尝试在C#中的ActiveX WebBrowser中设置/获取JavaScript变量

如何解决《尝试在C#中的ActiveXWebBrowser中设置/获取JavaScript变量》经验,为你挑选了1个好方法。

我们有一个包含ActiveX WebBrowser控件的Windows应用程序.作为此应用程序的常规操作的一部分,将对ActiveX WebBrowser控件显示的页面进行修改.部分修改涉及在加载到ActiveX WebBrowser中的网页中设置JavaScript变量.

我们需要在C#中初始化这个变量(最初,VB6代码正在初始化值).此变量的值是COM可见的类对象.

但是,为简单起见,我们将问题缩小为设置字符串值.我们的原始页面涉及框架等,但在这样的页面中出现相同的问题:


 
  Test
  
 
 
   
 

我们想要访问字段变量并为其赋值.在VB6中,代码非常简单:

doc.Script.field = 'newValue'

但是,在C#中我们不得不求助于其他技巧,如下所示:

Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(Script, null, "field",new object[] { "newValue"},null, null);

页面的要点是测试我们的变量是否由C#正确分配.单击该按钮应该产生C#注入的任何新值.因此,例如,单击页面中的按钮,我们会收到一条警告:"newValue".

这是第一次工作,但如果我们重新加载页面它不起作用.在后续调用中,我们无法设置变量的值field.

以前有没有人有过做这种操作的经验?



1> 小智..:

我认为你要找的是eval()Javascript中的方法.您可以像这样从C#调用它:

webBrowser1.Document.InvokeScript("eval", new String[] {"1 + 2"});

此代码将评估"1 + 2"并返回"3".我想如果你要投入

InvokeScript("eval", new String[] {"varName = 3"})

如果在文件中全局可见,则将该变量分配给3.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有