Declined
Last Updated: 12 Mar 2026 08:56 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>
    ";
}

3 comments
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.