如何在 C# 中调用 JavaScript 函数90


在 C# 和 JavaScript 互操作中,调用 JavaScript 函数是一项常见的需求。通过使用现代跨平台技术,例如 Blazor 和 JavaScript 互操作库,可以轻松实现跨语言调用。

Blazor 中的 JavaScript 互操作

Blazor 提供了一种简便的方法来在 C# 和 JavaScript 代码之间进行交互。使用 JSInterop 类,您可以直接调用 JavaScript 函数。为此,请执行以下步骤:
将 JSRuntime 服务注入您的 C# 组件。
使用 <T> 方法调用 JavaScript 函数,其中 T 是预期返回值的类型。
指定 JavaScript 函数的名称和参数作为参数。


using ;
namespace MyBlazorComponent
{
public class MyComponent
{
private readonly JSRuntime _jsRuntime;
public MyComponent(JSRuntime jsRuntime)
{
_jsRuntime = jsRuntime;
}
public async Task<string> GetValueFromJS()
{
return await <string>("myFunction", "argument");
}
}
}

JavaScript 互操作库

除了 Blazor,还有各种 JavaScript 互操作库可用于 C# 代码。流行的选项包括:
Jint:一个 C# JavaScript 引擎,允许您在 C# 代码中直接执行 JavaScript 代码。
:另一个 JavaScript 引擎,支持动态调用 JavaScript 函数和对象。
Duktape:一个轻量级的 JavaScript 引擎,适用于嵌入式场景。

要使用这些库,请按照库提供的说明进行操作。它们通常涉及创建 JavaScript 引擎实例并使用 Eval 或 Call 方法调用 JavaScript 函数。

具体示例

以下示例演示了如何在 C# 中使用 Jint 调用 JavaScript 函数:
using Jint;
namespace MyCSharpApp
{
class Program
{
static void Main(string[] args)
{
var engine = new Engine();
("function add(a, b) { return a + b; }");
var result = ("add", 1, 2);
(result); // Output: 3
}
}
}

最佳实践

在使用 C# 调用 JavaScript 函数时,请遵循以下最佳实践:
谨慎使用同步调用:同步调用可能会阻塞 UI。使用异步调用,例如 <T>。
验证输入:确保您信任您调用的 JavaScript 函数。恶意代码可能会导致安全问题。
使用合适的库:根据您的需要选择合适的 JavaScript 互操作库。对于简单的交互,Blazor 的 JSInterop 就足够了,对于更高级的场景,JavaScript 互操作库可能更合适。
进行单元测试:像测试其他代码一样测试您的 JavaScript 互操作代码,以确保其可靠性。


在 C# 中调用 JavaScript 函数可以实现语言之间的强大交互。通过 Blazor 或 JavaScript 互操作库,您可以轻松访问 JavaScript 功能,从而增强您的应用程序的功能。通过遵循最佳实践,您可以安全有效地跨语言调用。

2025-01-26


上一篇:JSON 转 JavaScript 对象

下一篇:PHP 和 JavaScript 之间的传值