http://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html

在网页采集中,很多时候需要运行网站下载的某个js文件中的函数,以计算Request参数。VBA直接运行JS函数有很多办法,常见的是通过msscriptcontrol.scriptcontrol或者htmlfile。

在这里,我提供另外一种比较灵活可控的方式来运行js函数。

C#可以调用很多js引擎来执行js代码,比较流行的有Jurassic,Jint ,  Nlua, ClearScript,IronJS,IKVM.NET等很多引擎。如果VBA可以通过C#调用这些引擎,那么我们就可以灵活的运行js函数了。

考虑il本身支持export导出函数接口,所以我做了一个C# dll(无需安装,直接调用),可以以API方式运行其中的函数来执行指定的js函数,并取回结果。

下面提供了一个VBA的调用示例,其它原生语言也可以参考VBA示例来调用这个dll。

运行环境:.NET Framework 4.5.2或更高。

在Windows10 64位和32位下测试通过。(如果电脑速度慢,第一次运行可能需要一点时间来启动jit)

函数声明:

VBA示例运行结果(参数调用有两个例子,一个是字符串方式,一个是Variant方式)

下载

联系QQ:564955427

如果有什么问题可以随时联系我。

VBA通过C#以API方式调用JS脚本函数的更多相关文章

  1. iOS:在OC中调用JS脚本

    示例一:在webView中调用js脚本进行搜索 1.首先导入JavaScriptCore.framework这个框架 2.创建webView.设置代理.请求手机端百度 #import "Vi ...

  2. java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

  3. java调用js脚本语言

    在我们开发的过程中,可能有这么一种情况,在java中需要取调用js方法完成一些事情.那么什么时候可能出现这种情况呢.比如我们使用爬虫模拟登录别的网站,但有些网站前台使用js对密码进行了加密处理,那么就 ...

  4. 【JS】<a>标签调用js中函数的几种方法

    我们常用的在a标签中有点击事件: a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而 ...

  5. 精华 selenium_webdriver(python)调用js脚本

    #coding=utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get(&qu ...

  6. <asp:Button点击查询后,调用js中函数展现加载圈

    <div> <div id='paneloading' style='display:none;position:fixed;top:0px;left:0px;z-index:999 ...

  7. java调用js脚本

    有些情况下,需要java去调用js,groovy等脚本语言,传入参数获取脚本运行的结果. js脚本例子: function add(a,b){ return a + b + number; } jav ...

  8. unity中三种调用其他脚本函数的方法

    第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名()第二种,GameObject.Find("脚本所在的物体的名字").SendMessage(" ...

  9. unity中调用其他脚本函数的方法(小白之路)

    第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage(& ...

随机推荐

  1. xml的解析及案例的分析和分享

    HTML的文档如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=& ...

  2. 采购合同的条件价格取值逻辑(如ME35K/ME3M显示报表的多个日期范围的条件价格)

    1.根据采购订单合同和行项目和类型(合同是M)在A016表中取值条件号, 2.根据A016的条件号在KONP中取得价格 ME35K.ME3M的增强点在子程序LMEREPI02下的  METHOD if ...

  3. HTTPS加密原理与过程

    HTTPS加密原理与过程 HTTP 超文本传输协议一种属于应用层的协议 缺点: 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡 ...

  4. s:schema报错问题

    解决方案: 删除所有<s:element ref="s:schema"/>标签 说明书改为本地文件

  5. php正则替换非站内链接 替换zencart描述内的非本站链接

    php正则替换非站内链接 <?php //要替换的文本,比如产品描述中的文字 header("content-Type: text/html; charset=utf-8") ...

  6. CSS基础-如何用border写三角形?

    1.常用的border的单值属性(border指的是边框.) /*边框样式属性*/ border-style: solid; /*边框颜色*/ border-color: #06a43a; /*边框宽 ...

  7. 2019强网杯web upload分析(pop链)

    参考链接:https://blog.csdn.net/qq_41173457/article/details/90724943 注意 只要namespace相同那就可以直接实例化同一namespace ...

  8. 【转】H5 浏览器和 webview 后退缓存机制

    来源:https://juejin.im/entry/588b44a08fd9c544813ed5b3 一.背景 用户点击浏览器工具栏中的后退按钮,或者移动设备上的返回键时,或者JS执行history ...

  9. ip addr详解

    Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. ip addr : lo: <LOOPBACK, ...

  10. R语言-八皇后问题

    老师给我出了个暑期作业:用R语言解决八皇后问题. 八皇后问题:国际象棋棋盘(8×8)上放8个“后”,使8个“后”之间互相不能被进攻.(即:每个“后”所在行.列.两条斜线都没有其它子) 查看网上,大多用 ...