javascript - 无法调用 Blazor javascript 方法

标签 javascript c# blazor javascript-interop

我正在尝试使用 JSinterop 从我的 Blazor 组件调用 javascript 函数,但我总是收到此错误:

"Uncaught SyntaxError: Unexpected end of input".

另外,当页面完全加载时会自动调用 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 - 无法调用 Blazor javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56620275/

相关文章:

javascript - 分区集使得笛卡尔积服从约束

javascript - 如何在移动设备上禁用我的这部分 javascript?

javascript - 如何将循环中的值放入其自己的 DIV 标记中?

asp.net-core - 使用 Jwt token 身份验证在 Blazor 服务器应用程序中自定义 AuthenticationStateProvider

c# - Blazor onclick 事件从循环中传入计数器

javascript - 使用 Safari 进行 JS 验证

c# - 如何生成 .cab 文件

c# - 为什么不无缘无故地使用 thread.sleep,并向程序员解释

c# - 有没有更快的方法从数据库查询填充结果集?

c# - Blazor 项目中的 C++ DLL