从HTML切换到设计时,RadEditor会不断删除<!doctype>标记,我该如何停止 - javascript

我在项目中使用RadEditor,但是当我在HTML编辑区域的顶部插入然后将视图切换到“设计”并返回时。标签被删除。我想停止RadEditor进行此操作,而无需修改太多现有过滤器。

您可以在以下链接中尝试

http://demos.telerik.com/aspnet-ajax/editor/examples/contentfilters/defaultcs.aspx

参考方案

问题是您使用DIV模式而不是iFrame模式。如果要使用DIV模式,则问题在于该页面中已经有一个doctype,head,footer等。页面中不能存在两次,浏览器会将其从页面中删除。

您可以使用iframe模式或下面的解决方案。

我使用的解决方案是用我的自定义标签替换该标签,当我从设计模式转到编辑模式时,我将其替换,当我将其保存到数据库时,我还将自定义标签替换为普通标签。例如:

下面的代码是我在项目中使用的示例(尚不包含doctype):

// Add the custom filter to the editor
function OnClientLoad(editor, args) {
    editor.get_filtersManager().add(new MyFilter());
}

// Replace the tags HTML does not expect twice
var tags = ["html", "body", "head", "title", "form", "textarea"];

MyFilter = function () {
    MyFilter.initializeBase(this);
    this.set_isDom(false);
    this.set_enabled(true);
    this.set_name("RadEditor filter");
    this.set_description("RadEditor filter description");
}

MyFilter.prototype =
{
    getHtmlContent: function (content) {
        var newContent = content;

        for (var i = 0; i < tags.length; i++) {
            var tag = tags[i];
            newContent = newContent.replace(new RegExp("<j" + tag, "gi"), "<" + tag);
            newContent = newContent.replace(new RegExp("<" + "/j" + tag + "", "gi"), "<" + "/" + tag + "");
        }

        return newContent;
    },
    getDesignContent: function (content) {
        var newContent = content;
        for (var i = 0; i < tags.length; i++) {
            var tag = tags[i];
            newContent = newContent.replace(new RegExp("<" + tag, "gi"), "<j" + tag);
            newContent = newContent.replace(new RegExp("<" + "/" + tag + "", "gi"), "<" + "/j" + tag + "");
        }
        return newContent;
    }
}
MyFilter.registerClass('MyFilter', Telerik.Web.UI.Editor.Filter);

并从编辑器获取HTML并替换新标签:

function GetEditorHtmlCall() {
    var html = $find("RadEditor1").get_html(true);

    for (var i = 0; i < tags.length; i++) {
        var tag = tags[i];
        html = html.replace(new RegExp("<" + tag, "gi"), "<j" + tag);
        html = html.replace(new RegExp("<" + "/" + tag + "", "gi"), "<" + "/j" + tag + "");
    }

    return html;
}

上面的代码将替换下面的示例。在设计模式下,您具有jhtml标记,在html模式下,您具有html标记。保存时,将jhtml标记转换回html,因此在数据库中很好用:

<html></html> to <jhtml></jhtml>

希望这能为您提供所需的解决方案。

在<select>元素上忽略了DDSlick的“ selected”属性 - javascript

我正在使用以下jQuery插件:http://designwithpc.com/Plugins/ddSlick要在下拉列表中显示可选图像,请选择框。它与我尝试使用已选择的选项加载html时非常有用,但在DDSlick中未选择此选项(因此它仅显示第一个选择的选项)。如何转换:<select class="homepage_icon" …

用symfony隐藏树枝中的表格行 - javascript

我正在开始编码。我正在使用Symfony 3.3我想用复选框隐藏(并显示)表上的a或某些特定行。我尝试使用javascript和jquery。我希望隐藏的行保持隐藏状态。我不知道该怎么做。这是我的树枝{% block body %} <div class="container"> <h3>List of produ…

我必须编写正则表达式,它只允许@#$%作为特殊符号,而不允许其他诸如?> <`〜符号的符号 - javascript

我必须编写正则表达式,它只允许!@#$%^&作为特殊符号,字母和数字,而不允许其他特殊符号,如?> <`〜符号。我尝试使用:(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&]这要求我输入我在正则表达式中提到的至少一个数字,一个字符和一个特殊符号,这很好用。但是我想输入其他特殊符号(例如〜)吗?等等,那么它必须…

如何将List <>传递给Javascript并在组合框C#中显示 - javascript

我有一个列表,其中存储了一些从数据库中筛选出的记录。我不懂Javascript。有谁可以教我如何将列表传递给Javascript并将其显示在组合框中?P / S:我希望组合框文本字段存储Name(允许用户查看),而value字段存储nameId(从用户隐藏)。我后面的C#代码如下:public static List<bllControls> g…

如何在JavaScript中将多个h1元素替换为h1,h2,h3,h4,h5,h6? - javascript

@foreach (var item in Model) { <div class="panel-heading"> <h1> <a href="#">@item.Title</a> </h1> </div> } 结果; (每页发布数:6)<…