IJSRuntime调用JavaScript方法报错:找不到encryptMessage
Blazor调用JS函数"encryptMessage"未定义问题解决办法
下面是针对该错误的排查和解决步骤:
1. 确保JS函数挂载到全局window对象
Blazor的IJSRuntime只能访问全局作用域的函数,需要把encryptMessage挂载到window上,确保Blazor能找到它:
<script> ... OTHER FUNCTIONS // 将函数挂载到全局window对象 window.encryptMessage = function(message, key) { console.log("HERE") } </script>
2. 调整脚本加载顺序
确保自定义脚本在Blazor框架脚本之前加载,避免Blazor初始化时脚本还未加载完成:
<!-- 先加载自定义脚本 --> <script> window.encryptMessage = function(message, key) { console.log("HERE") } </script> <!-- 再加载Blazor核心脚本 --> <script src="_framework/blazor.webassembly.js"></script>
3. 检查脚本加载状态
打开浏览器开发者工具(F12):
- 切换到Network标签,确认自定义脚本是否成功加载(无404错误)
- 切换到Console标签,检查是否有脚本语法错误,语法错误会导致函数无法正常定义
4. 验证IJSRuntime注入有效性
可以在组件生命周期方法中验证注入是否正常:
protected override async Task OnInitializedAsync() { if (mJsRunTime != null) { await mJsRunTime.InvokeVoidAsync("console.log", "IJSRuntime注入正常"); } }
内容的提问来源于stack exchange,提问作者Ibanez1408
相关产品推荐
相关产品推荐

