我正在尝试使用JSinterop从Blazor组件调用javascript函数,但我总是收到此错误:
“未捕获到的SyntaxError:输入意外结束”。
另外,当页面满载时将自动调用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;
},
};
答案 0 :(得分:2)
在发生onclick事件时出现语法错误
onclick="@setLocalStorage()"
应该是
@onclick=“@setLocalStorage”
所有Blazor事件现在都必须以@开头。
您还需要更改点击处理程序的签名,并且应该等待通话。
public async Task setLocalStorage()
{
await jsRuntime.InvokeAsync<object>("interop.setItem", "username",
"Aymen");
}