繁体   English   中英

在C#中运行javascript

[英]Run javascript in C#

我在我想在我的C#应用​​程序中使用的oilmonkey脚本中找到了一个相当复杂的函数。 基本上,我正在解析页面,并且需要收集var avar = {};全部或4个成员var avar = {}; (我还没有这样做,但是它们都是使用var avar.name = "val"字符串)

然后,我需要调用gm func,它返回一个字符串并接受3个字符串。 如何在C#中调用该函数? 我正在使用.NET 3.5

我假设您正在服务器端或其他处理HTML数据的独立应用程序中重复使用一些代码。

您可以使用Microsoft.JScript.JScriptCodeProvider类在.net中编译JavaScript(至少是其子集)-尽管请注意该类会警告

此API支持.NET Framework基础结构,不能直接在您的代码中使用。

编译后,生成的程序集(由提供程序提供的CompilerParameters指定)应该可以动态加载。 建议使用Reflector之类的工具检查生成的程序集,以查看您实际上在类和名称空间方面生成的程序集。

免责声明 -我只在CSharpCodeProvider作用于C#源代码时才使用了此技术,但是我希望这种事情在.net语言之间具有合理的兼容性。

编辑-有关从C#编译JavaScript的示例,请参阅此博客文章“使用C#验证JavaScript语法”

首先,您可能想确切地考虑为什么要这样做。 是否要在C#中使用JS中的算法? 如果是这样,请继续。 如果要在客户端代码(即浏览器)中使用C#,请改为研究Silverlight。

其次,我不确定您要执行的操作是否确实可行。 根据您要实现的目标,最好将Greasemonkey应用程序中的Java脚本转换为C#3.5(假设脚本的许可条件允许这样做),以便在您的应用程序中使用。

翻译应该不会很困难-在最近的几个版本中,C#越来越像JS。 只要注意“ var”关键字即可; 它在C#中的含义与JS中的含义略有不同(将C#中的“类型推断”与JS中的“动态类型”进行对比)。

当然,在完成这两个版本的代码后,这将很棘手且痛苦。 如果可以的话,我建议保留1个权威版本的代码。

祝好运!

您能否提供有关脚本以及想要完成的工作的更多信息? 大多数Greasemonkey脚本通过使用 Javascript与DOM交互。 您可以在C#中运行Javascript,但是DOM将不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM