Declined
Last Updated: 19 Mar 2026 11:24 by ADMIN
Andreas
Created on: 26 Feb 2026 12:52
Category: Editor
Type: Bug Report
1
Scripting error in Editor if row without cells

When a table row does not have any cells, there might be lots of script errors when hovering the empty row with the mouse.

The error is the following:
Uncaught RangeError: Not a table node: doc

    get http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    get http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    decorations http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    decorations http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Fa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    someProp http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Fa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    updateStateInner http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    updateState http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    dispatch http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Bu http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    mousemove http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    mousemove http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Vo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    someProp http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Vo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    i http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Jo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    someProp http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Jo http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Wa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    Wa http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initEditor http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initialize http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    d http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initComponent http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    initEditor http://localhost:5045/_content/Telerik.UI.for.Blazor/js/telerik-blazor.kh4xf5u23f.js:1
    processJSCall http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    beginInvokeJSFromDotNet http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _invokeClientMethod http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _processIncomingData http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    onreceive http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    onmessage http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    connect http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    connect http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startTransport http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _createTransport http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startInternal http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    start http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startInternal http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    _startWithStateTransitions http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    start http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    startConnection http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    startCore http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    start http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    rr http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    or http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    startCircutIfNotStarted http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    resolveRendererIdForDescriptor http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    determinePendingOperation http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    refreshRootComponents http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    rootComponentsMayRequireRefresh http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    rootComponentsMayRequireRefresh http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    onDocumentUpdated http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    Ki http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    Vi http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    <anonymous> http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1
    <anonymous> http://localhost:5045/_framework/blazor.web.ax6tuj8tun.js:1

 

Sometimes we even have a server error:
Microsoft.JSInterop.JSException: Not a table node: table_wrapper
RangeError: Not a table node: table_wrapper
    at https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1557112
    at pl.get (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1558816)
    at https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1638148
    at Be.decorations (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1638538)
    at https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1529498
    at Wa.someProp (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1548718)
    at Fa (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1529464)
    at Wa.updateStateInner (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1545305)
    at Wa.update (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1544591)
    at Wa.setProps (https://somesite/caesar/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js?x=25.1.7.1096:23:1544734)
   at Microsoft.JSInterop.JSRuntime.InvokeAsync[TValue](Int64 targetInstanceId, String identifier, Object[] args)
   at Telerik.Blazor.Components.TelerikEditor.SetOptions()
   at Telerik.Blazor.Components.TelerikEditor.OnParametersSetAsync()
   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)

The server error is really hard to recreate, but it seems like users that has a slow computer and hovers the editor directly when loading gets this error sometimes...

Here is the source code (hovering the empty row will generate scripting errors):

<TelerikEditor Height="300px" @bind-Value="@Value" EditMode="Telerik.Blazor.EditorEditMode.Iframe" ReadOnly="true">
</TelerikEditor>

@code {
    public string Value { get; set; } =
            @"
<table>
    <tbody>
        <tr>
            <td>
               Some text
            </td>
        </tr>
        <tr style=""height: 24px"">
        </tr>
        <tr>
            <td>
                Some text
            </td>
        </tr>
    </tbody>
</table>
    ";
}

5 comments
ADMIN
Ivan Danchev
Posted on: 19 Mar 2026 11:24

Andreas,

I understand the challenges you face with regard to the error logs, however, the error is thrown by ProseMirror library that is used internally by the Editor. One idea you may explore is, if it is possible to avoid the error by modifying the ProseMirror's Schema: https://prosemirror.net/docs/guide/#schema and passing the modified schema to the Editor: https://www.telerik.com/blazor-ui/documentation/components/editor/prosemirror-schema/modify-default-schema 

Be advised that we use the default ProseMirror Schema, thus, modifying the schema is outside the scope of the Editor and we do not provide support for such customizations.

The developers of ProseMirror might be able to elaborate more on whether preventing the RangeError("Not a table node") in your scenario is possible through Schema modification and what exactly such a modification should consist of: https://discuss.prosemirror.net/ 

Regards,
Ivan Danchev
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Andreas
Posted on: 17 Mar 2026 10:34

This is really bad news for us...

Like I said, the scripting error is ok, but can you at least do a property or something that if set, ignores error in OnParametersSet.

We are getting tons of errors from our end users right now, so what are our options?

Can we build a custom dll from the source code, or what can we do?

ADMIN
Ivan Danchev
Posted on: 12 Mar 2026 08:56

Andreas,

I've discussed the current behavior with our developers. I'll post their reasoning for not changing it:

We use the ProseMirror library for the content and it is expected to throw an exception for invalid HTML. If we allow invalid HTML structure, other functionality will break, such as cursor position, resize calculations, and the table's edit state as a whole. 

In case there is invalid input, as in the scenario with the empty tr element, the exception helps as it indicates there is a problem with the input. 

Regards,
Ivan Danchev
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Andreas
Posted on: 05 Mar 2026 11:49

Well, real world html is almost never 100% according to the html specification...

Our end users are using the editor to edit a lot of variants of imported html that comes from lots of different sources, so invalid html is something that is "normal" and that has to be handled!

The scripting errors is not a big deal, but we have lots off errors in our server logs where this happens from the server event OnParametersSet. So if you only could ignore errors in that function that would be sufficient.
One of our customers have about 100 errors/day with this error in their logs, so this is about 95% of all errors in our product...

And as you understand, we cannot easily change all variants of html that is not 100% according to html specification, and we cannot ignore the error either since it happens in your component...

ADMIN
Ivan Danchev
Posted on: 05 Mar 2026 09:42

Hello Andreas,

A row (tr) should contain cells (td), otherwise it is invalid HTML and will throw a table model error, according to the HTML specification.

Regards,
Ivan Danchev
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.