Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 10:58   #1
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию javascript, highlight и ucoz

Ни как не могу разобраться с этой нечестью. Может кто подскажет?
В общем код заключается в теги <pre><code>code</code></pre> и тогда выполняется скрипт подсветки, подсветка с авто определением.
Но ucoz bbcode заменяет на свою нечестивую фигню и не дает подсветить код.
Код:
<script type="text/javascript"> 
 diviki = document.getElementsByTagName('DIV'); 
 for( i = 0; i < diviki.length; i++) { 
    if(diviki[i].className == "codeMessage"){
      diviki[i].innerHTML = '<pre><code>'+diviki[i].innerHTML+'</code></pre>';
    }
 } 
</script>
Но код не подсвечивается и причины я этому не вижу.
PS. если просто где-то на странице вставить кусок <pre><code>code</code></pre>, то все работает!
Возможно есть способ удалить тег <div>, или сделать свой bbcode, но я не знаю как это реализовать.
Kostia вне форума Ответить с цитированием
Старый 24.02.2009, 12:06   #2
ilusha
Пользователь
 
Аватар для ilusha
 
Регистрация: 18.02.2009
Сообщений: 12
Лампочка Попробуй это.

Проблема решаема довольно просто. Используй библиотеку Mootools. В ней есть такой метод destroy класса Element. С помощью его
ты можешь уничтожить свой <div>, но будь осторожен, не уничтож всех его "детей". Вот ссылка на документацию.
http://mootools.net/docs/Element/Element

P.S.
И если ты используешь prototype, то имей в виду что они не совместимы. Но по твоему коду на это не похоже, так что все должно быть нормально.
ilusha вне форума Ответить с цитированием
Старый 24.02.2009, 17:28   #3
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от ilusha Посмотреть сообщение
Проблема решаема довольно просто. Используй библиотеку Mootools. В ней есть такой метод destroy класса Element. С помощью его
ты можешь уничтожить свой <div>, но будь осторожен, не уничтож всех его "детей". Вот ссылка на документацию.
http://mootools.net/docs/Element/Element

P.S.
И если ты используешь prototype, то имей в виду что они не совместимы. Но по твоему коду на это не похоже, так что все должно быть нормально.
Тогда уж покажите, каким образом через mootools удалить DIV.
SkyM@n вне форума Ответить с цитированием
Старый 24.02.2009, 17:37   #4
ilusha
Пользователь
 
Аватар для ilusha
 
Регистрация: 18.02.2009
Сообщений: 12
По умолчанию

Я же дал ссылку на документацию. Там популярно описано как работает этот метод. Надо просто залесть и посмотреть.
Цитата из дока .

Empties an Element of all its children, removes and garbages the Element.

Syntax:
myElement.destroy();
ilusha вне форума Ответить с цитированием
Старый 24.02.2009, 17:46   #5
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Код:
var div = $(diviki[i]);
div.Destroy;
Но загвоздка оказалась не в том. Все дело в html тегах что расставляет ucoz.
Например:
program _1;<br>
&nbsp;&nbsp;begin<br>
...
И из-за них highlight не хочет работать, он просто не может определить язык.
А если я тупо беру текст и вставляю в него необходимы для подсветки теги, то текст получается без переходов на сл. строку.
Код:
if(diviki[i].className == "codeMessage"){
 var div = $(diviki[i]);
 var text = div.get('text');
 div.empty();
 div.set('html','<pre><code>'+text+'</code></pre>');
 }
Тогда все работает, но весь код - это одна строка.
тут была ссылка. удалено. //модератор
_____
Мне кажется, что в ucoz реализовать подсветку синтаксиса нет возможности и вообще это unreal.
_____
ilusha, за документацию спасибо.

Последний раз редактировалось SkyM@n; 24.02.2009 в 19:45.
Kostia вне форума Ответить с цитированием
Старый 24.02.2009, 19:47   #6
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Kostia, а не судьба ли зарегистрироваться на нормальном хостинге?
Начинают юзать укоз, а потом жалеются, что граблями побило...
По сабжу - Покажите, что выводит укоз и то, что вы хотите, чтобы он выводил.
SkyM@n вне форума Ответить с цитированием
Старый 25.02.2009, 09:11   #7
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Я к чертям собачьим снес сайт.
Я нашел одно бредовое решение проблемы. Можно разрешить использование html тегов и прямо в ответе прописывать эти самые <pre><code>...</code><pre>. Но это бред.
На самом деле код приведенный в первом посте тоже работает, но что-то перебивает настройки шрифта которые выставляет highlight.
Я даже копировал содержимое блоков в корень сообщения <td class="posttdmessage"...></td> но все равно не работает, хотя в этом же теге содержится абсолютно рабочий код.

В общем тему можно считать закрытой.

________
Нашел решение!!!

Код:
e=document.getElementsByTagName("td");
for(k=0;k<e.length;k++) {
if(e[k].className=='posttdMessage') {
s=e[k].innerHTML;
while (s.indexOf('[syntax]') != -1) {
s=s.replace(/<br>/gi,'\r\n');
if(navigator.userAgent.indexOf('IE')!=-1) {
s=s.replace(/<p>/gi,'\r\n');
s=s.replace(/<\/p>/gi,'\r\n');
} else {
s=s.replace(/<p>/gi,'\r\n\n');
s=s.replace(/<\/p>/gi,'\r\n\n');
}
s=s.replace('[syntax]','<pre><code>');
s=s.replace('[\/syntax]','</code></pre>');
e[k].innerHTML=s;
}}}
Данный скрипт чистит от ненужных тегов и вместо bbcode [syntax] ставит то, что нам нужно. Результат превзошел все ожидания.

Вышеприведенный код нужно положить в файл shForUcoZ.js (например), залить его на сайт и после $BODY$ выполнить следующее:

Код:
<?if($PAGE_ID$="threadpage")?>
<script src="/shForUcoZ.js"></script>
<?endif?>

Последний раз редактировалось Kostia; 25.02.2009 в 18:56.
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Css + ucoz nake94 HTML и CSS 9 06.01.2009 15:44
UCOZ.RU L1NK. JavaScript, Ajax 0 05.11.2008 17:18
Регистрация на форумах в системе ucoz ben95 Работа с сетью в Delphi 5 28.04.2008 15:27
Работа по написанию скрипта по системе Ucoz rpg Фриланс 6 06.02.2008 20:28