When editing certain HTML layouts in a RadEditor on a Mac, when you right-click on the empty space to the right of the text content in a table cell inside a nested table, then click Row -> Insert Row Above, the editor inserts a row above the current row in one of the parent tables, instead of in the table containing the specific cell that was clicked on.
To reproduce, paste the following code into the HTML view of a RadEditor. Then switch to Design mode, and right click in the empty space to the right of the text "Type your message here!", but within the same table cell as that text. Select Row -> Insert Row Above, and see that the editor inserts a row into the wrong table.
This is only reproducible on a Mac, but it has been confirmed to happen in both Safari and Chrome.
The project this is for is currently using version 2016.3.1027, however I've pasted this code into the Telerik RadEditor demo at https://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx , which I presume is running the latest version, and the problem is reproducible there also.
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta content="width=device-width" name="viewport" />
<title>Newsletter from your Pro</title>
<style type="text/css">
<!--
-->
</style>
</head>
<body>
<table style="background-color: #C9CAC8 ;" cellspacing="0" cellpadding="0" border="0" width="100%">
<tbody>
<tr>
<td>
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif;" class="body" cellspacing="0" cellpadding="0" align="center" border="0" width="640">
<tbody>
<tr>
<td style="background-color: #ffffff; height: 60px;" class="side-pad" colspan="6" align="center"><span style="text-align: center;" class="devicewidthinner"></span></td>
<td style="background-color: #ffffff; height: 60px;" class="side-pad" align="center"><span style="font-size: 14px; font-family: Helvetica, Arial, sans-serif; color: #63666a;">February 5, 2019</span></td>
</tr>
<tr>
<td style="background-color: #ffffff; height: 87px;" class="side-pad" colspan="6" align="center"><span class="devicewidth"></span></td>
<td style="background-color: #ffffff;" class="side-pad" align="center"></td>
</tr>
<tr>
<td style="background-color: #d55c19; width: 201px; height: 30px;" class="side-pad" align="center"><span style="text-align: center; font-weight: normal; line-height: 24px; font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: #ffffff;"><a style="color: #fff; text-decoration: none;" href="http://www.test.com">Visit website</a></span></td>
<td style="background-color: #ffffff; width: 4px;" class="side-pad" align="center"> </td>
<td style="background-color: #d55c19; width: 86px;" class="side-pad" align="center"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: #ffffff;"><a style="color: #fff; text-decoration: none;" href="mailto:test@test.com">Email me!</a></span></td>
<td style="background-color: #ffffff; width: 4px;" class="side-pad" align="center"> </td>
<td style="background-color: #d55c19; width: 122px;" class="side-pad" align="center"><span style="text-align: center; line-height: 15px; font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: #ffffff;">123-456-7890</span></td>
<td style="background-color: #ffffff; width: 4px;" class="side-pad" align="center"> </td>
<td style="background-color: #63666a; width: 201px; height: 30px;" class="side-pad" align="center"><span style="text-align: center; font-weight: normal; font-size: 12pt; line-height: 24px; font-family: Helvetica, Arial, sans-serif; color: #ffffff;">Test Testerson</span></td>
</tr>
<tr>
<td style="background-color: #ffffff;" class="side-pad" colspan="7" align="center">
<table class="container" cellspacing="0" cellpadding="0" align="center" border="0" width="600">
<tbody>
<tr>
<td style="height: 250px;" align="center">
<table class="row" cellspacing="0" cellpadding="0" align="center" border="0" width="580">
<tbody>
<tr>
<td style="height: 250px;">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tbody>
<tr>
<td style="width: 100%; height: 205px;" valign="top">
<table style="mso-table-lspace:0;mso-table-rspace:0;" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
<tbody>
<tr>
<td style="font-size: 14px; color: #63666a; font-weight: normal; line-height: 20px; width: 205px;" colspan="4" valign="top"> </td>
</tr>
<tr>
<td style="font-size:14px; color:#63666a; font-weight:normal; text-align:left; line-height:20px;" colspan="4" valign="top"><span style="font-size: 14px; font-family: Helvetica, Arial, sans-serif; color: #63666a;">Type your message here!</span></td>
</tr>
<tr>
<td style="font-size:14px; color:#63666a; font-weight:normal; text-align:left; line-height:20px;" colspan="4" valign="top"> </td>
</tr>
<tr>
<td style="font-size:14px; color:#63666a; font-weight:normal; text-align:left; line-height:20px;" colspan="4" valign="top"> </td>
</tr>
<tr>
<td style="font-family: Helvetica, Arial, sans-serif; font-weight: normal; font-size:14px; color: #63666a; line-height:18px; text-align:left;" colspan="4">
<p> </p>
</td>
</tr>
<tr>
<td colspan="4" valign="top"> </td>
</tr>
<tr>
<td colspan="4" valign="top"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="background-color: #63666a;" class="side-pad" colspan="7" align="center">
<table class="container" cellspacing="0" cellpadding="0" align="center" border="0" width="600">
<tbody>
<tr>
<td align="center">
<table class="row" cellspacing="0" cellpadding="0" align="center" border="0" width="580">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tbody>
<tr bgcolor="#63666A">
<td style="height: 18px;" valign="top" align="center"> </td>
</tr>
<tr>
<td valign="top">
<table style="mso-table-lspace:0;mso-table-rspace:0;" class="full-width collapse" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
<tbody>
<tr>
<td style="font-size:12px; color:#63666a; font-weight:normal; text-align:left;" class="center">
<p><span style="font-size: 12px; line-height: 14px; text-align: left; font-family: Helvetica, Arial, sans-serif; color: #ffffff;" class="footer">Here is some footer text.</span></p>
</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="center" valign="top" align="center"> </td>
</tr>
<tr>
<td class="center" valign="top" align="center">
<table cellspacing="0" cellpadding="0" align="center" border="0">
<tbody>
<tr>
<td align="center"></td>
<td style="width: 12px;" align="center"> </td>
<td align="center"></td>
<td style="width: 12px;" align="center"> </td>
<td align="center"></td>
<td style="width: 12px;" align="center"> </td>
<td align="center"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr style="background-color: #636666a;">
<td style="background-color: #63666a;" class="side-pad" colspan="7" align="center">
<table class="container" cellspacing="0" cellpadding="0" align="center" border="0" width="600">
<tbody>
<tr>
<td align="center">
<table class="row" cellspacing="0" cellpadding="0" align="center" border="0" width="580">
<tbody>
<tr>
<td style="height: 20px;"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p> </p>
</td>
</tr>
</tbody>
</table>
</body>
</html>
Setup:
To See the Problem:
I've been trying to upgrade an existing solution to use the latest release version (2019) of the Telerik UI for ASP.NET AJAX and have encountered a major problem with the 'Tool Provider', a technique which is significantly used in my solution. This same error displays in your own Telerik Demo. Details are:
Description of the issue
Having multiple RadEditors on the same page, and trying the
property "ToolProviderID" (to reuse the same floating tool amongst
the different editors on the same page), causes a "javascript
exception" on the client side.
URL of the Demo (Telerik
Website)
https://demos.telerik.com/aspnet-ajax/editor/examples/toolprovider/defaultcs.aspx
Exception description
Uncaught TypeError: R.get_canAcceptTrackChange is not a function
at c.RadEditor._initializeToolProvider (RadEditor.js:8239)
at c.RadEditor.initialize (RadEditor.js:8297)
at c.RadEditor.endUpdate (Telerik.Web.UI.WebRe…597d4b%3ab25378d2:6)
at Sys._Application.endCreateComponents (Telerik.Web.UI.WebRe…597d4b%3ab25378d2:6)
at Sys.WebForms.PageRequestManager._scriptsLoadComplete (Telerik.Web.UI.WebRe…97d4b%3ab25378d2:15)
at Sys.WebForms.PageRequestManager.<anonymous> (Telerik.Web.UI.WebRe…597d4b%3ab25378d2:6)
at Telerik.Web.UI.WebRe…597d4b%3ab25378d2:6
at Sys._ScriptLoader._loadScriptsInternal (Telerik.Web.UI.WebRe…97d4b%3ab25378d2:15)
at Sys._ScriptLoader._loadScriptsInternal (Telerik.Web.UI.WebRe…97d4b%3ab25378d2:15)
at Sys._ScriptLoader._loadScriptsInternal (Telerik.Web.UI.WebRe…97d4b%3ab25378d2:15)
How to reproduce the error
(on Telerik demo website)
- Mark the checkbox at the bottom of the page and click on
"Update":
(the error can be seem on console, pressing F12)
Error message happening in
our system
Sample code, causing
the issue (our system)
Refer the attached image.
I am using Telerik.WEB.UI version: 2018.1.117.45 in my website. I am getting as issue in RADEditor control when I create a hyperlink within Editor. Right clicking on that hyperlink opens a context menu, when I click on properties from the context menu, it opens an 'Image Manager' instead of 'Hyperlink Manager'.
The issue is occurring only in IE 11, rest all the browsers are opening 'Hyperlink Manager'. Please advise.
Thank you
There's a bug in the RadEditor WordListConverter convert method. See the attached image for details. Note that the variable z is initialized and treated as an array (a stack, actually, with its items being pushed in and popped out). However, perhaps because of a naming scope failure in the js-minifier, the z variable is, under certain conditions, set equal to an HTMLCollection, so a subsequent z.push method call fails.
This sample Word document reproduces the error. It is admittedly full of bad list formatting, because it began life as a PDF, but it does exercise the RadEditor code in a way that causes the problem. Select and copy its content and paste it in the RadEditor demo page here:
https://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx
Click OK to "clean" the pasted content and note that nothing appears because of the error shown in the attached image.
Verified in the latest Chrome and FF builds on Windows 10.
Hi,
As per title and I also find out it able to reproduce in the demo site: https://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx
Step:
1. Change to 'HTML' mode.
2. Open 'Find And Replace' dialog.
3. Enter a word to find and hit the 'Find' button.
Notice that the word does not get highlighted. It only happens in 'HTML' mode, 'Design' mode working fine.
Please help as this feature is very useful in my project.
Thank you.
The issue is as we are deleting the entire line which contains bullets, it doesn't delete the bullets. We are using server side AcceptTrackChanges() method and it keeps the background color of the deleted lines. ASPX <telerik:RadEditor RenderMode="Lightweight" ID="RadEditor1" EnableTrackChanges="true" runat="server" Width="750px" Height="400px" ToolsFile="~/ToolsFile.xml"> <TrackChangesSettings Author="RadEditorUser" CanAcceptTrackChanges="true" UserCssId="reU0"></TrackChangesSettings> <Content> <ol> <li>test <ol> <li>test2</li> </ol> </li> <li>test3</li> </ol> </Content> </telerik:RadEditor> <asp:Button Text="Get Content" OnClick="GetContent" runat="server" /> <br /> EditorWithoutTracking:<br /> <asp:TextBox runat="server" id="EditorWithoutTracking" TextMode="MultiLine" Width="1000px" Height="500px"/><br /> EditorWithTracking:<br /> <asp:TextBox runat="server" id="EditorWithTracking" TextMode="MultiLine" Width="1000px" Height="500px"/> Codebehind protected void GetContent(object sender, EventArgs e) { EditorWithoutTracking.Text = RadEditor1.Content; RadEditor1.AcceptTrackChanges(); EditorWithTracking.Text = RadEditor1.Content; }
I have an issue when I line break in RADEditor but it keeps going to the bottom of the line in Internet Explorer v11. Please note that the issue is reproducible on Telerik Demo site. Steps to reproduce the issue: Copy and paste the following content in HTML mode Some content <br /> <br /> Put the cursor in the beginning of this line, press Backspace and after that Enter <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> Switch to Design panel Press Backspace twice in front of the text "Put the cursor in the beginning of this line, press Backspace and after that Enter" Press Enter Result The content jump to the bottom of the line See the attached video for more information.
If RadEditor is initially hidden with display:none, its tools do not work when displayed in Firefox 62.0: <div style="display: none" id="hiddenWrapper"> <telerik:RadEditor ID="RadEditor1" runat="server"></telerik:RadEditor> </div> <script> function f() { $get('hiddenWrapper').style.display = "block"; } Sys.Application.add_load(f); </script> There is a warning error in the console: "Mutation Events is deprecated and to use MutationObserver". The fix is to call the $find("RadEditor1").onParentNodeChanged(); method to recreate the content area: <div style="display: none" id="hiddenWrapper"> <telerik:RadEditor ID="RadEditor1" runat="server"></telerik:RadEditor> </div> <script> function f() { $get('hiddenWrapper').style.display = "block"; $find("RadEditor1").onParentNodeChanged(); } Sys.Application.add_load(f); </script>
Likely to happen when an element is empty, not just the editor, if you can get the cusros in an empty <p>, and press backspace you can get the same behavior, it can happen as you work on some content Steps to reproduce: 1. Go to the Editor demo page http://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx in Chrome 2. CTRL+A on the editor and hit delete 3. Hit Delete or Backspace again Result: Uncaught TypeError Cannot read property 'nodeType' of undefined Appears in the console
I know that there are articles that describe how to detect that the user has interacted with the RadEditor, but checking whether the content has changed is quite another task. I understand that the underlying storage method makes it almost impossible to compare, but that's why we need the control to do this internally. Even if we fall short of comparing the content, at least build-in the workarounds into the control to invoke a single "Changing" event.
The image manager dialog do not resize properly in Chrome when the screen resolution is 1920x1080 and the Windows zoom level is 125%-150%-175%. In Internet Explorer, all dialogs have scrolls - tested on 4k screen with 150% zoom. See the attachments. Workaround: <script> function OnClientCommandExecuted(editor, args) { if (editor.get_dialogOpener()) { var commandName = args.get_commandName(); if (editor.get_dialogOpener()._getDialogContainer) { dialogReference = editor.get_dialogOpener()._getDialogContainer(commandName); setTimeout(function () { var dialogContainerHeight = parseInt(editor.get_dialogOpener()._getDialogContainer(commandName).get_contentElement().style.height); dialogReference.set_height(dialogContainerHeight + 40); dialogReference.get_contentElement().removeAttribute("style"); dialogReference.get_contentElement().style.height = dialogContainerHeight + 5 + "px"; }, 1000); } } } </script> <telerik:RadEditor ID="RadEditor1" runat="server" OnClientCommandExecuted="OnClientCommandExecuted"> <ImageManager ViewPaths="~/" /> </telerik:RadEditor>
Can be reproduced with the code below: <telerik:RadEditor runat="server" ID="RadEditor1" > <Content> Here is sample content! </Content> </telerik:RadEditor> <input type="button" value="Set Focus On RadEditor" onclick="SetFocusOnRadEditor(); return false;" /> <script type="text/javascript"> function SetFocusOnRadEditor() { var editor = $find("<%=RadEditor1.ClientID%>"); //get a reference to RadEditor client object editor.setFocus(); //set the focus on the the editor } </script> The problem is not reproducible when the ContentAreaMode is set to DIV or in the other browsers. Workaround <telerik:RadEditor runat="server" ID="RadEditor1"> <Content> Here is sample content! </Content> </telerik:RadEditor> <button type="button" onclick="SetFocusOnRadEditor()">Focuse On RadEditor</button> <script type="text/javascript"> function SetFocusOnRadEditor() { var editor = $find("<%=RadEditor1.ClientID%>"); if ($telerik.isChrome) { var iframe = editor.get_contentAreaElement(); iframe.contentWindow.document.body.focus(); } else { editor.setFocus(); } } </script>
We have an issue with paragraph styles which have some custom classes. It has different behavior depending on how you select your paragraph. In some cases, when you fully select your paragraph the class remains the same the previous paragraph. Please see the video of issue reproducing on the Telerik demo for more details: https://www.screencast.com/t/xg9b1imVO Workaround: <script type="text/javascript"> function OnClientCommandExecuting(editor, args) { //The command name var commandName = args.get_commandName(); //The tool that initiated the command if (commandName == "FormatBlock") { //editor.get_document().execCommand("FormatBlock", false, "div"); var selectedElement = editor.getSelectedElement(); if (selectedElement.getAttribute("style")) { selectedElement.removeAttribute("style"); } else if (selectedElement.getAttribute("class")) { selectedElement.removeAttribute("class"); } } } </script> <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" ToolsFile="Tools.xml" Width="800px" OnClientCommandExecuting="OnClientCommandExecuting"> <Content> some plain text </Content> <CssFiles> <telerik:EditorCssFile Value="Styles.css" /> </CssFiles> </telerik:RadEditor>
If misspelled word is coming after scroll bar it is not focusing in IE11, Edge and Chrome. Can be reproduced in the default demo - https://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx Paste the following content <p>a</p> <p>a</p> <p>a</p> <p>a</p> <p>a</p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p>risksss</p> and click on the spell check button. The popup with the suggestions will be positioned outside of the content area. As a workaround you can switch to DIV content area mode - https://demos.telerik.com/aspnet-ajax/editor/examples/contentareamodediv/defaultcs.aspx
Repro steps: - use the editor below and the attached Word document in the archive at the end - copy the document content in the editor - clean the word formatting - select some of the content (e.g., one paragraph) - click the format stripper dropdown and choose Strip Span Elements - run get_html(true) in the console Expected: spans are stripped only from the selected content Actual: nothing is stripped. Changing to HTML mode and back to Design fixes this, so you should not use that to check the HTML <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> WORKAROUNDS: For the majority of cases you can set up automatic stripping of span elements when pasting from Word, so your users do not need to do that themselves. Here is an example: <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" StripFormattingOptions="ConvertWordLists, MSWordNoMargins, Span"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> You can read more on how stripping MS Word content works in the following demo, and play around with the various options to see what works best for your case: http://demos.telerik.com/aspnet-ajax/editor/examples/cleaningwordformatting/defaultcs.aspx and in the following documentation article: https://docs.telerik.com/devtools/aspnet-ajax/controls/editor/managing-content/pasting-content/clean-ms-word-formatting There are also two possible code workarounds so advanced users can retain more control over the HTML without switching to the HTML mode themselves. The second is likely to be a tad faster with large content, but the first is likely to produce better user experience. 1) this changes the mode to HTML and back to design with each paste so that the stripping tool can work with the selection <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" OnClientCommandExecuted="OnClientCommandExecuted"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> <script> function OnClientCommandExecuted(sender, args) { if (args.get_commandName() == "Paste") { sender.set_mode(2); setTimeout(function () { sender.set_mode(1); }, 50); } } </script> 2) this one is a workaround that allows the stripping tool to work without mode change, but it will not operate with the selection but with all the content <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" OnClientCommandExecuting="OnClientCommandExecuting"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> <script> function OnClientCommandExecuting(sender, args) { if (args.get_commandName() == "StripSpan") { sender.set_html(sender.get_html(true)); } } </script>