|
Hight ↓
|
 |
|
24 Август, 2011, 01:54:13
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Что-то совсем мозг опух, не знаю как более элегантно или красиво решить задачку. Может и нельзя красивее и элегантнее. Данная функция гоняет теги: b, strong в соответствующий bbcode и обратно при переключении режима редактора. Зацените:
textEditor.boldModeChangeContentSecond = function(name){
if(this.config[name].mode){ /* Из текстового режима в визуальный */
if(this.config[name].modeText == 'bbcode') this.textarea[name].value = this.textarea[name].value.replace(/\[b\](.*?)\[\/b\]/mig, '<b>$1</b>');
}else{ /* Из визуального режима в текстовый */
if(this.config[name].modeText == 'bbcode'){
var nodes = [this.iframe[name].doc.getElementsByTagName('b'), this.iframe[name].doc.getElementsByTagName('strong')], cNodes, fragment;
for(var ig = 0; ig < nodes.length; ig++){
for(var i = nodes[ig].length-1; i >= 0; i--){
cNodes = nodes[ig][i].childNodes;
fragment = this.iframe[name].doc.createDocumentFragment();
fragment.appendChild(this.iframe[name].doc.createTextNode('[b]'));
for(var ic = 0; ic < cNodes.length; ic++) fragment.appendChild(cNodes[ic]);
fragment.appendChild(this.iframe[name].doc.createTextNode('[/b]'));
nodes[ig][i].parentNode.replaceChild(fragment, nodes[ig][i]);
}
}
}
}
};
Говно или круто?
|
|
|
|
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 02:09:27 , спустя 15 минут 14 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Сука, из текстового в визуальный вложенные теги не конвертит.
Спустя 3 минуты 52 секунды добавил Хотя, что это я. Нахуй надо [ b] в [ b] вкладывать.
|
|
|
|
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 05:57:39 , спустя 15 часов 48 минут 12 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Отдохнул, посмотрел на своё творение свежим взглядом и понял, что сотворил чудо. Этот код идеален! Аминь...
|
|
|
|
« Последнее редактирование: 24 Август, 2011, 05:57:39 от Hight »
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 06:15:01 , спустя 17 минут 22 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Блеать, как дурак тут сам с собой пижю.
|
|
|
|
|
Записан
|
|
|
|
|
Status ↓
|
 |
|
24 Август, 2011, 06:33:32 , спустя 18 минут 31 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Редкостная сволочь
Группа: Джедаи Карма: 57
Сообщений: 1447 Сила слова: 3.94
|
Почему как?:D
|
|
|
|
|
Записан
|
Заткнись говно, я воевал!
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 06:39:20 , спустя 5 минут 48 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Status, ну ты и тролль! Коллега.
|
|
|
|
|
Записан
|
|
|
|
|
Frozzeg ↓
|
 |
|
24 Август, 2011, 06:50:45 , спустя 11 минут 25 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Пятросянище Карма: 92
Сообщений: 5500 Сила слова: 1.67
|
MOAR циклов
|
|
|
|
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 07:02:50 , спустя 12 минут 5 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Frozzeg, не-не. Там всё чётко с циклами. Всё красиво. Я сейчас в ядро этот код вынесу, оформлю отдельной универсальной функцией и будет ваще круто. Главное, что сделал всё без использования innerHTML. То-есть косяков быть не может как у других которые в innerHTML регулярками конвертят.
|
|
|
|
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 10:22:55 , спустя 3 часа 20 минут 5 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Вот она, красавица. Функция конвертации обычных тегов в ббкод.
tagsToBBCode: function(name, tags, oTag, cTag){
var nodes = [], cNodes, fragment;
for(var i = 0; i < tags.length; i++) nodes.push(this.iframe[name].doc.getElementsByTagName(tags[i]));
for(var ig = 0; ig < nodes.length; ig++){
for(var i = nodes[ig].length-1; i >= 0; i--){
cNodes = nodes[ig][i].childNodes;
fragment = this.iframe[name].doc.createDocumentFragment();
fragment.appendChild(this.iframe[name].doc.createTextNode(oTag));
for(var ic = 0; ic < cNodes.length; ic++) fragment.appendChild(cNodes[ic]);
fragment.appendChild(this.iframe[name].doc.createTextNode(cTag));
nodes[ig][i].parentNode.replaceChild(fragment, nodes[ig][i]);
}
}
}
Вызывается так: this.tagsToBBCode(name, ['b', 'strong'], '[ b]', '[ /b]');
Ну сказка просто.
|
|
|
|
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 11:38:22 , спустя 1 час 15 минут 27 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Ржунимагу. В функции есть ошибка, сцуко самая злая ошибка. Из тех, что не сразу видишь - логическая. Цикл кривой. Вопрос знатокам - какой?
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
24 Август, 2011, 11:42:00 , спустя 3 минуты 38 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: 20790 Сила слова: 1.66
|
Ржунимагу. В функции есть ошибка, сцуко самая злая ошибка. Из тех, что не сразу видишь - логическая. Цикл кривой. Вопрос знатокам - какой?
гавнокод не разбираю :)
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Hight ↓
|
 |
|
24 Август, 2011, 11:44:45 , спустя 2 минуты 45 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Ржунимагу. В функции есть ошибка, сцуко самая злая ошибка. Из тех, что не сразу видишь - логическая. Цикл кривой. Вопрос знатокам - какой?
гавнокод не разбираю :)
Сам ты говнокод. Ты сначала сам так наговнокодь, а потом пизди =) Спустя 40 секунд добавил Короче, подсказка. Теряются ноды. Детишки теряются.
|
|
|
|
|
Записан
|
|
|
|
|
Hight ↓
|
 |
|
25 Август, 2011, 12:20:07 , спустя 35 минут 22 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Красный властелин
Группа: Адекваты Карма: 31
Сообщений: 1626 Сила слова: 1.91
|
Этим DOMом можно мозги в узел завязать:
tagsToBBCode: function(name, tags, oTag, cTag){
var nodes = [], cNodes, fragment;
for(var i = 0; i < tags.length; i++) nodes.push(this.iframe[name].doc.getElementsByTagName(tags[i]));
for(var ig = 0; ig < nodes.length; ig++){
for(var i = nodes[ig].length-1; i >= 0; i--){
cNodes = nodes[ig][i].childNodes;
fragment = this.iframe[name].doc.createDocumentFragment();
fragment.appendChild(this.iframe[name].doc.createTextNode(oTag));
fragment.appendChild(this.iframe[name].doc.createTextNode(cTag));
for(var ic = cNodes.length-1; ic >= 0; ic--) fragment.insertBefore(cNodes[ic], fragment.childNodes[1]);
nodes[ig][i].parentNode.replaceChild(fragment, nodes[ig][i]);
}
}
}
|
|
|
|
|
Записан
|
|
|
|
|