我将 Plotly Blazor 与服务器端 Blazor 结合使用。当我使用 JS Interop 打开包含 Plotly 图形的新窗口时:
JSRuntime.InvokeVoidAsync("open", System.Threading.CancellationToken.None, $"/chart/{b}/{(int)readingType}", "_blank");
我收到错误:
Error: Microsoft.JSInterop.JSException: Could not find 'plotlyInterop.newPlot' ('plotlyInterop' was undefined).
Error: Could not find 'plotlyInterop.newPlot' ('plotlyInterop' was undefined).
据我了解,该页面缺少 javascript。我效仿了违反内容安全政策的行为,但这并没有什么结果。当我重新加载时,单击“刷新”按钮,页面将重新加载并正常工作。脚本已加载。
此问题仅发生在使用 IISExpress 作为 Visual Studio 2022 版本 17.3.6 的服务器的开发环境中。当我在 Raspberry Pi 上运行的 Nginx 上部署时,我没有收到此错误。
任何如何解决问题的建议将不胜感激。
@Nb777 指出脚本尚未准备好。在我更改了
_Layout.cshtml
(.NET 6) 中的脚本顺序以便在 blazor.server.js
之前调用 Plotly 后,问题似乎消失了。
@RenderBody()
<script src="_content/Plotly.Blazor/plotly-latest.min.js" type="text/javascript"></script>
<script src="_content/Plotly.Blazor/plotly-interop.js" type="text/javascript"></script>
<script src="_content/Radzen.Blazor/Radzen.Blazor.js"></script>
<script src="_framework/blazor.server.js"></script>
这与脚本加载的顺序或时间有关。
我有同样的问题/错误消息,但使用的是 SweetAlerts2。 (Blazor,服务器端)
解决方案是在运行 JS 函数之前在测试浏览器(我的例子中是 Chrome)中进行简单的删除浏览数据清理。