[英]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.