如何使用 class 库中的 IJSRuntime

How to use IJSRuntime from class library

假设有人想编写一个 NuGet 包,通过 JS 互操作在 Blazor 中写入 cookie。

IJSRuntime.InvokeAsync 调用一个方法,该方法必须由某个人定义 -- 在 DLL 范围之外。

有没有办法注入所需的脚本函数,以便库可以在不需要前端感知的情况下调用它?

我需要这样调用。这不是函数。

document.cookie = "cookiename=cookievalue; expires= Thu, 21 Aug 2014 20:00:00 UTC"

我查看了 Blazored LocalStorage 的实现,本地存储是使用标准方法设置和读取的,这样就容易多了。

嗯...有“评估”功能!

这有效。

await jsRuntime.InvokeVoidAsync("eval", "document.cookie = ''");

但是,必须小心转义参数。

不过,对于复杂的库来说,这不是一个可扩展性很强的策略。第 3 方库要求您添加对其 .js 文件的引用。