c# - 如何使用类库中的 IJSRuntime
问题描述
假设有人想编写一个 NuGet 包,该包通过 JS 互操作在 Blazor 中写入 cookie。
IJSRuntime.InvokeAsync 调用一个方法,该方法必须由某个人定义——在 DLL 的范围之外。
有没有办法注入所需的脚本函数,以便库可以在不需要了解前端的情况下调用它?
我需要这样称呼。这不是一个功能。
document.cookie = "cookiename=cookievalue; expires= Thu, 21 Aug 2014 20:00:00 UTC"
我查看了 Blazored LocalStorage 的实现,并使用标准方法设置和读取 localstorage,这样就容易多了。
解决方案
嗯...有“评估”功能!
这行得通。
await jsRuntime.InvokeVoidAsync("eval", "document.cookie = ''");
但是,必须小心转义参数。
不过,对于复杂的库来说,这不是一个非常可扩展的策略。相反,第 3 方库要求您添加对其 .js 文件的引用。
推荐阅读
- angular - 无法将数据传递给 ngFor 循环中的 Angular 子组件?
- java - 在不创建新实例的情况下推断泛型类型
- python - Python如何在不覆盖我们在多线程时输入的内容的情况下打印
- node.js - reactjs生产中的主机标头无效
- c# - Facebook 分享 html 代码
- python - 在自定义 Dask 图中包含关键字参数 (kwargs)
- windows - 找不到满足要求的版本
, 无匹配分布 - html - HTML正文不滚动
- docusignapi - 在 API 创建的信封完成后连接不记录来自回调 URL 的错误
- java - 将 Lettuce 与 RedisTemplate 一起使用会引发异常