javascript - 无法调用 Blazor javascript 方法
问题描述
我正在尝试使用 JSinterop 从我的 Blazor 组件调用 javascript 函数,但我总是收到此错误:
“未捕获的语法错误:输入意外结束”。
另外,当页面完全加载时会自动调用 javascript 函数,这不是所需的行为,因为我想在单击按钮时触发该函数。
@page "/jsInterop"
@inject IJSRuntime jsRuntime
<h3>JSinterop</h3>
<button type="button" class="btn btn-primary"
onclick="@setLocalStorage()">
Trigger JavaScript Prompt
</button>
@code{
public object setLocalStorage()
{
return jsRuntime.InvokeAsync<object>("interop.setItem", "username",
"Aymen");
}
}
window.interop = {
setItem: function (name, value) {
window.localStorage[name] = value;
return value;
},
};
解决方案
你有一个语法错误,你有 onclick 事件
onclick="@setLocalStorage()"
应该
@onclick=“@setLocalStorage”
所有 Blazor 事件现在都需要以 @ 为前缀。
您还需要更改单击处理程序的签名,并且应该等待调用。
public async Task setLocalStorage()
{
await jsRuntime.InvokeAsync<object>("interop.setItem", "username",
"Aymen");
}
推荐阅读
- javascript - 如何通过 JS 或其他浏览器自动化工具更改打开页面的 url
- firebase - 无法将颤动的 Web 应用程序链接到 Firebase 项目/无限加载
- html - 如何在文本里面创建一个选项卡
- plaid - 格子 - 更新模式与重新关联帐户
- c++ - 用于获取必须在 png_struct->num_rows 和 png_struct->flush_rows 中的数据的 C++ 函数
- javascript - Google Maps JavaScript API 请求被拒绝
- python - python:解析冒号分隔的格式化字符串
- c# - 如何将委托和显示设置到控制台(C#)中?
- django - ckeditor如何更改按钮文本
- c - 反转字符串中单词顺序的程序错误地打印反转的字符串