gpt4 book ai didi

c# - 在 C# 窗体中访问 javascript 方法(没有 Webbrowser 或 DOM)

转载 作者:行者123 更新时间:2023-11-29 15:44:43 28 4
gpt4 key购买 nike

我一直在使用带有 javascript 库的 Web 服务,并通过 ExternalInterface 调用从 C# 到 Javascript 来回访问 Web 服务,反之亦然。我不想再这样做了,我几乎完成了用 C# 重写库。大部分工作正常。

不幸的是,我发现在 javascript 中有一系列(静态)方法很难在 C# 中复制。具有此类运算符的方法,例如:

 static LongEmul dCb (LongEmul b) {
var c = ~b.l + 1 & 4194303;
var d = ~b.m + (c == 0 ? 1 : 0) & 4194303;
var e = ~b.h + (c == 0 && d == 0 ? 1 : 0) & 1048575;
return tBb(c, d, e);
}

这是我重构 javascript 的尝试:不是很好。如何在启动时创建某种 DOM 或 Javascript 解析器对象,将 javascript 方法或完整类写入该对象,然后使用来自 c# 的参数调用对象中的方法并接收返回值。我知道这听起来有点像我要替换的 ExternalInterface 方法,但我很想知道是否可以以任何方式从 C# 调用 Javascript 语法中的方法。

对此,我将不胜感激。

谢谢。

最佳答案

您可能想使用 Jint ,一个 .NET 的 JavaScript 解释器。Jint 允许您向它提供一些 JavaScript 代码,不仅可以解释它,甚至还可以让您直接从您的 .NET 代码调用 JS 方法。

来自 Jint 网站:

script= @"
function square(x) {
return x * x;
};

return square(number);
";

var result = new JintEngine()
.SetParameter("number", 3)
.Run(script));

Assert.AreEqual(9, result);

更新

调用特定的 JS 方法(来自 docs ):

JintEngine jint = new JintEngine();
jint .Run(@"
var f = function (x, y) {
return x * y;
}
";

Console.WriteLine(jint.CallFunction("f", 2, 3)); // Displays 6

关于c# - 在 C# 窗体中访问 javascript 方法(没有 Webbrowser 或 DOM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13536449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com