Blazor 使用Javascript编辑DOM
我正在使用MathQuill在页面上渲染latex,但这与渲染树相冲突 blazor正在调用Javascript:Blazor 使用Javascript编辑DOM,blazor,Blazor,我正在使用MathQuill在页面上渲染latex,但这与渲染树相冲突 blazor正在调用Javascript: RenderQuizInterface: function () { MQ.StaticMath(document.getElementById("quizQuestion")) for (var ele of document.getElementsByClassName("quiz-button-latex")) {
RenderQuizInterface: function () {
MQ.StaticMath(document.getElementById("quizQuestion"))
for (var ele of document.getElementsByClassName("quiz-button-latex")) {
MQ.StaticMath(ele);
}
},
Blazor页面:
@page "/quiz"
@inject IJSRuntime JsRuntime;
@using Boolean_Algebra.Components.Quiz;
<h1 class="text-center main-web-width" id="title">Quiz</h1>
<QuizInterface manager="manager"/>
@code {
public QuizManager manager;
protected override void OnInitialized()
{
AssignManager();
}
private void AssignManager() {
manager = new QuizManager();
manager.onAnswer += (s,e)=> {
AssignManager();
this.StateHasChanged();
};
}
protected override void OnAfterRender(bool firstRender)
{
JsRuntime.InvokeVoidAsync("JsFunc.RenderQuizInterface");
}
}
@page”/quick
@注入IJSRuntime JsRuntime;
@使用布尔代数。组件。测验;
测验
@代码{
公共QuizManager经理;
受保护的覆盖无效OnInitialized()
{
分配经理();
}
私人经理(){
manager=新的QuizManager();
manager.onAnswer+=(s,e)=>{
分配经理();
此.StateHasChanged();
};
}
受保护的覆盖无效OnAfterRender(布尔firstRender)
{
JsRuntime.InvokeVoidAsync(“JsFunc.RenderQuizInterface”);
}
}
目前,它呈现乳胶,但在调用my onAnswer事件时,它不会用新问题替换旧乳胶。
这可以在没有JsRuntime调用的情况下工作,但它将在页面上显示原始latex,而不是格式化的latex。有没有合适的方法可以在不破坏rendertree的情况下执行此操作?我在reddit上收到了此评论 方法是渲染Blazor不会试图保留的输出 跟踪。诀窍是为容器呈现标记,而不是 在剃刀上宣布 @((MarkupString)$“{ContentToTransform}”) 看看这是否有效 解决了我描述的问题