语境
我试图了解 JsInterop javascript 端的实现方式和位置。
在我的 Blazor Server 项目中给出以下示例代码:
public static ValueTask<string> Prompt(IJSRuntime jsRuntime, string message)
{
// Implemented in exampleJsInterop.js
return jsRuntime.InvokeAsync<string>(
"exampleJsFunctions.showPrompt",
message);
}
及其对应的javascript:
window.exampleJsFunctions = {
showPrompt: function (message) {
return prompt(message, 'Type anything here');
}
};
(我确实了解SignalR 基础设施及其对电路概念的使用,我确实了解电路用于 Blazor 服务器项目中的两种客户端服务器通信。)
问题
该项目使用的唯一客户端脚本是:<script src="_framework/blazor.server.js"></script>
据了解,所有 javascript 执行调度功能都应该在那里。我认为从服务器端完成 javascript 调用的唯一方法是一些 javascript eval() 功能。我试图找到源代码 _framework/blazor.server.js,我想它在 github 中,因为它在 /dist 文件夹中的构建输出包含文件 blazor.server.js
我试图在打字稿源中找到这部分(执行名称来自服务器的javascript函数),但没有成功。谁能指出我正确的方向?我是在找错地方了,还是没有 eval()?
*** 编辑:与此同时,我了解到不仅 eval() 在这里播放,实际上它是最后的机会,还有 the window["functionName"](arguments);
too 及其变体。仍在寻找相关的源代码行...