2014-10-15 1 views
0

Я использую RadEditor в своем проекте, однако, когда я вставляю в верхнюю часть области редактирования HTML, а затем переключаю представление на «Дизайн» и возвращаюсь обратно. Тег удален. Я хочу остановить RadEditor, делая это, не изменяя слишком много существующих фильтров.RadEditor продолжает удалять <!doctype> тег при переключении с HTML на дизайн, как мне остановить это

Вы можете попробовать это в следующей ссылке

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

ответ

1

Вопрос заключается в том, что вы используете режим DIV, а не режим IFRAME. Если вы хотите использовать режим DIV, проблема в том, что на этой странице уже есть doctype, head, footer и т. Д. Которая не может существовать дважды на странице, и браузер удалит ее со своей страницы.

Вы можете использовать eather режим iFrame или решение ниже.

Решение, которое я использую, заключается в замене этого тега на собственный тег, который я заменяю, когда я перехожу из режима проектирования в режим редактирования, и когда я сохраняю его в базе данных, я также заменяю свои пользовательские теги на обычные теги. Например:

Приведенный ниже код является примером я использую в моем проекте (не содержит доктайп еще):

// 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> 

Надежда это дает вам решение, которое вы ищете.

 Смежные вопросы

  • Нет связанных вопросов^_^