Что видим – то и получаем eto'o Хакер, номер #082, стр. 082-124-5 [капаем внутри] Если ты откроешь главную страничку редактора, то на самом верху увидишь следующие строки: .edx { behavior:url(edx.htc); } Теперь если опуститься в самый низ документа, ты увидишь главный DIV-контейнер с редактируемым контентом. Среди его параметров указан следующий: class=edx. Все это означает, что для создания редактора используется механизм html-behaviors, с помощью которого программисты могут определять собственные HTML-документы, с собственным набором свойств и методов, с которым можно работать абсолютно так же, как и с любым стандартным элементом. Это действительно удобный пример, почитать подробнее о котором ты можешь все на том же MSDN: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/behaviors/overview/elementb_ovw.asp. Не вдаваясь в подробности, отмечу, что в файле edx.htc, содержимое которого ты можешь видеть на соответствующем скрине, содержится перечисление всех методов и свойств элемента; там же подключаются js-файлы с описанием всей функциональности нового объекта. [контроль за редактированием] Редактируемый при помощи майкрософтовского примера документ должен содержать в себе информацию о том, как он должен отображаться и редактироваться. Это определяется во внешнем файле, чья роль носит ключевой характер во всем процессе редактирования. Указывается этот файл следующим образом: Думаю, всем уже понятно, что этот файл сам по себе является XML-документом. Однако его содержимое заставляет поговорить о себе более подробно. Весь файл состоит из шаблонов, которые задаются тэгом edx:template. Шаблонов может быть сколько угодно, и для каждого XML-узла задается конкретный шаблон, при помощи которого будет отображен этот элемент. Обработка начинается с коренного шаблона, который содержит в себе ссылки на другие шаблоны, каждый из которых обрабатывает дочерние элементы. Совершенно понятно, что шаблоны, обрабатывающие эти дочерние элементы также могут содержать ссылки на другие темплейты, и так до тех пор, пока мы не дойдем до текстовых данных: в этом случае, как правило, используется встроенный шаблон с именем field:flow, который просто выводит текстовое содержимое элемента. У каждого шаблона обязательно есть свойство type: оно может содержать либо region, либо container. В первом случае подразумевается, что соответствующий шаблону элемент содержит в себе разношерстные узлы, и для каждого из них будет указан соответствующий темплейт. Во втором же случае имеется в виду, что узлы однотипные и обрабатываются при помощи одного и того же шаблона, как бы в цикле. Вообще здесь можно сказать много слов, но лучше посмотреть, как это выглядит на практике. [коренной шаблон] |