Javascript RadEditor不断删除<;!doctype>;标签从HTML切换到Design时,如何停止此操作

Javascript RadEditor不断删除<;!doctype>;标签从HTML切换到Design时,如何停止此操作,javascript,c#,html,telerik,radeditor,Javascript,C#,Html,Telerik,Radeditor,我在我的项目中使用RadEditor,但是当我在HTML编辑区域的顶部插入,然后将视图切换到Design并返回时。标签被移除。我希望在不修改太多现有过滤器的情况下停止RadEditor执行此操作 您可以在下面的链接中尝试 问题在于您使用的是DIV模式,而不是iFrame模式。如果要使用DIV模式,问题是该页面中已经有doctype、head、footer等。一个页面中不能存在两次,浏览器会将其从您的页面中删除 您可以使用iFrame模式或下面的解决方案 我使用的解决方案是用我的自定义标记替换该标

我在我的项目中使用RadEditor,但是当我在HTML编辑区域的顶部插入,然后将视图切换到Design并返回时。标签被移除。我希望在不修改太多现有过滤器的情况下停止RadEditor执行此操作

您可以在下面的链接中尝试


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

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

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

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

//将自定义筛选器添加到编辑器中
函数OnClientLoad(编辑器,参数){
get_filtersManager().add(new MyFilter());
}
//替换标记HTML不需要两次
var标签=[“html”、“body”、“head”、“title”、“form”、“textarea”];
MyFilter=函数(){
MyFilter.initializeBase(this);
此.set_isDom(false);
此。设置_已启用(true);
此.set_name(“RadEditor过滤器”);
此.set_说明(“RadEditor过滤器说明”);
}
MyFilter.prototype=
{
getHtmlContent:函数(内容){
var newContent=内容;
对于(var i=0;i// 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);
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;
}
<html></html> to <jhtml></jhtml>