【发布时间】:2020-05-10 08:49:38
【问题描述】:
上下文
我正在尝试了解 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,我想它在这里here in github,因为它在/dist 文件夹中的构建输出包含文件blazor.server.js
我试图在打字稿源中找到这部分(执行来自服务器的 javascript 函数由其名称给出的),但没有成功。谁能指出我正确的方向?我是在找错地方,还是没有 eval()?
*** 编辑:与此同时,我了解到不仅 eval() 在这里播放,实际上这是最后一次机会,还有 window["functionName"](arguments); 及其变体。仍在寻找相关的源代码行...
【问题讨论】:
标签: blazor blazor-server-side blazor-jsinterop