首页 > 解决方案 > 如何使用类库中的 IJSRuntime

问题描述

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

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

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

我需要这样称呼。这不是一个功能。

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

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

标签: c#asp.net-coreblazorblazor-server-sideasp.net-blazor

解决方案


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

这行得通。

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

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

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


推荐阅读