Пока нашел только такое решение - заключать код в эти теги:
<code>
.....
.Код.
.....
</code>
Попробовал заключать еще и в <pre>, но при копировании кода через clipboard, теряются символы переноса и весь код выстраивается в одну строку.
* * *
Попробовал вставить скрипт. Пока получилось вот что:
package {
import flash.display.Sprite;
import flash.display.Bitmap;
[Frame(factoryClass="MyFactory")]
public class FrameTest extends Sprite
{
[Embed(source="big_asset.jpg")]
private var Asset:Class;
public function FrameTest()
{
init();
}
public function init():void
{
var asset:Bitmap = new Asset();
addChild(asset);
}
}
}
* * *
Вот код преобразовывающего скрипта:
<script type="text/javascript">
// CodeBlocksSubstitutor
var i=0;
var j=0;
while(_DIV = document.getElementById("code"))
{ _DIV.id="processed";
if ((_DIV.innerText==null)(_DIV.innerText=="")) continue;
AREA = document.createElement("TEXTAREA");
AREA.id = "codeArea"+i;
if (_DIV.rows==null) AREA.rows = 10; else AREA.rows = _DIV.rows;
AREA.cols = 53;
AREA.readOnly = true;
AREA.wrap = "off";
i++;
// *** Удалено *** if (_DIV.markup!=null) AREA.appendChild(_DIV.cloneNode(true)); else
AREA.innerText=_DIV.innerText;
newdiv=document.createElement("DIV");
newdiv.appendChild(AREA);
div_parent=_DIV.parentNode;
div_parent.replaceChild(newdiv,_DIV);
}
</script>
В тексте, код необходимо поместить в контейнер:
<div id="code" rows="20">
</div>
Параметр id="code" указывает на то, что текст необходимо обработать.
Параметр rows задает количество строк поля TextArea.
*** УДАЛЕНО *** Параметр markup="on" включает разметку кода. Но при этом, код будет неверно копироваться в клипбоард.
Тег div можно заменить на любой другой, например, code. Это повлияет на внешний вид контейнера.
* * *
Итак, выдрав код замены DIV на TEXTAREA
отсюда, выявил несколько неудобств (копируемый в клипбоард код теряет переносы, необходимо заключать в дополнительный контейнер содержимое) и внес коррекции. Однако, остался один недостаток - теряются пробельные символы в начале строк. Кроме того, теряется форматирование, но, на мой взгляд, это не является большим минусом при выкладывании кода.
Итак, решение позволяет сделать так, чтобы код помещался в контейнере TextArea. Не более того.
* * *
После непродолжительного использования скрипта, выявился важный недостаток. IE 6.0 сваливается по критической ошибке, если уйти со страницы и опять на нее вернуться.
Виновником оказался код
AREA.appendChild(_DIV.cloneNode(true));.
Код
AREA.appendChild(_DIV.firstChild); тоже валит IE.
Пришлось отказаться от форматированного варианта с markup="on". Да и фиг с ним.
* * *
Обновил код: для пользователей альтернативных браузеров и Mac, текст в полях ввода не виден, всё из-за того, что на свойство innerText им совсем наплевать - оно не поддерживается DOM. Посему, не вдаваясь в подробности, я просто отключаю помещение кода в TextArea для всех браузеров, которые не IE. Возможно, позже найдется лучшее решение.
Да, знаю - камень в огород бесплатного блогирования.