Фильтр по:
  

  • Страница 1 из 1
  • 1
Модератор форума: likbezz  
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Как сделать... » Как сделать выделение текста в Code по клику? (Реализация выделения кода по клику при помощи JavaScript)
Как сделать выделение текста в Code по клику?
Дата: Среда, 27.07.2011, 06:42 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Упаковываем оператор в блок с ID == forumContent.
Типа вот так:

Code
<div id="forumContent">$BODY$</div>


И сразу после блока добавляем следующий скрипт, через условные операторы:

Скрипт:
Code
<script type="text/javascript">
function selectCode(a){var e=a.parentNode.parentNode.getElementsByTagName('code')[0];if(window.getSelection){var s=window.getSelection();if(s.setBaseAndExtent){s.setBaseAndExtent(e,0,e,e.innerText.length-1)}else{var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else if(document.getSelection){var s=document.getSelection();var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}else if(document.selection){var r=document.body.createTextRange();r.moveToElementText(e);r.select()}}
var codeblock=document.getElementById('forumContent').getElementsByTagName('div');for(i=0;i<codeblock.length;i++){if(codeblock[i].className=="bbCodeBlock"){s=codeblock[i].innerHTML;s=s.replace(/>Code</g,'>Код: <a href="javascript:\/\/" onclick="selectCode(this);return false;">Выделить всё<\/a><').replace('<!--uzc-->','<!--uzc--><code>').replace('<!--\/uzc-->','<\/code><!--\/uzc-->');codeblock[i].innerHTML=s}};
</script>


Всё вместе:
Code
<div id="forumContent">$BODY$</div>
<?if($PAGE_ID$='threadpage')?>
<script type="text/javascript">
function selectCode(a){var e=a.parentNode.parentNode.getElementsByTagName('code')[0];if(window.getSelection){var s=window.getSelection();if(s.setBaseAndExtent){s.setBaseAndExtent(e,0,e,e.innerText.length-1)}else{var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else if(document.getSelection){var s=document.getSelection();var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}else if(document.selection){var r=document.body.createTextRange();r.moveToElementText(e);r.select()}}
var codeblock=document.getElementById('forumContent').getElementsByTagName('div');for(i=0;i<codeblock.length;i++){if(codeblock[i].className=="bbCodeBlock"){s=codeblock[i].innerHTML;s=s.replace(/>Code</g,'>Код: <a href="javascript:\/\/" onclick="selectCode(this);return false;">Выделить всё<\/a><').replace('<!--uzc-->','<!--uzc--><code>').replace('<!--\/uzc-->','<\/code><!--\/uzc-->');codeblock[i].innerHTML=s}};
</script>
<?endif?>

...

Скрипт можно вынести в отдельный файл, и подключать вот так:
Code
<div id="forumContent">$BODY$</div>
<?if($PAGE_ID$='threadpage')?>
<script type="text/javascript" src="http://likbezz.ru/_theme1/_ext/js/_selectCode_v0.js"></script>
<?endif?>


Работает примерно так: - кликнете по ссылке «выделить всё», текст выделится.

Скрипт в прикреплении.
...



Прикрепления: _selectCode_v0.js (1.0 Kb)

 
Дата: Четверг, 28.07.2011, 11:44 |
Полковник
Группа: Помощники
Сообщений: 210
Награды: 0
Репутация: 11
Статус: Offline


Отлично! Поставил у себя, работает замечательно. А вот с Quote, не пойму где ошибаюсь:
Code
function selectQuote(a){var e=a.parentNode.parentNode.getElementsByTagName('quote')[0];if(window.getSelection){var s=window.getSelection();if(s.setBaseAndExtent){s.setBaseAndExtent(e,0,e,e.innerText.length-1)}else{var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else if(document.getSelection){var s=document.getSelection();var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}else if(document.selection){var r=document.body.createTextRange();r.moveToElementText(e);r.select()}}
var quoteblock=document.getElementById('forumContent').getElementsByTagName('div');for(i=0;i<quoteblock.length;i++){if(quoteblock[i].className=="bbQuoteBlock"){s=quoteblock[i].innerHTML;s=s.replace(/>Quote</g,'>Цитата: <a href="javascript:\/\/" onclick="selectQuote(this);return false;">Выделить всё<\/a><').replace('<!--uzq-->','<!--uzq--><quote>').replace('<!--\/uzq-->','<\/quote><!--\/uzq-->');quoteblock[i].innerHTML=s}};

Вроде заменил всё, но не выделяет. Что-то лишнее заменил? Или чего-то не правильно?


 
Дата: Четверг, 28.07.2011, 11:53 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Komoff,
Quote (Komoff)
var e=a.parentNode.parentNode.getElementsByTagName('quote')[0];

ヅ ... Нет такого тега ... ) ... Ну вы даёте, как напишите ... так напишите ...
...
Держи ...
Code
<script type="text/javascript">
function selectQuote(a){var e=a.parentNode.parentNode.parentNode.getElementsByTagName('div')[1];if(window.getSelection){var s=window.getSelection();if(s.setBaseAndExtent){s.setBaseAndExtent(e,0,e,e.innerText.length-1)}else{var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else if(document.getSelection){var s=document.getSelection();var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}else if(document.selection){var r=document.body.createTextRange();r.moveToElementText(e);r.select()}}
var codeblock=document.getElementById('forumContent').getElementsByTagName('div');for(i=0;i<codeblock.length;i++){if(codeblock[i].className=="bbQuoteBlock"){s=codeblock[i].innerHTML;s=s.replace(/>Quote</g,'>Цитата: <a href="javascript:\/\/" onclick="selectQuote(this);return false;">Выделить всё <\/a><');codeblock[i].innerHTML=s}};
</script>

... или как у тебя ... (только зачем заменять ещё и текст ... ??? это же не код ...)

Code
<script type="text/javascript">
function selectQuote(a){var e=a.parentNode.parentNode.parentNode.getElementsByTagName('blockquote')[0];if(window.getSelection){var s=window.getSelection();if(s.setBaseAndExtent){s.setBaseAndExtent(e,0,e,e.innerText.length-1)}else{var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}}else if(document.getSelection){var s=document.getSelection();var r=document.createRange();r.selectNodeContents(e);s.removeAllRanges();s.addRange(r)}else if(document.selection){var r=document.body.createTextRange();r.moveToElementText(e);r.select()}}
var quoteblock=document.getElementById('forumContent').getElementsByTagName('div');for(i=0;i<quoteblock.length;i++){if(quoteblock[i].className=="bbQuoteBlock"){s=quoteblock[i].innerHTML;s=s.replace(/>Quote</g,'>Цитата: <a href="javascript:\/\/" onclick="selectQuote(this);return false;">Выделить всё <\/a><').replace('<!--uzq-->','<!--uzq--><blockquote>').replace('<!--\/uzq-->','<\/blockquote><!--\/uzq-->');quoteblock[i].innerHTML=s}};
</script>

... К тегу <blockquote> прописать нулевые поля и отступы ...
Типа:
Code
<style type="text/css">
#forumContent blockquote{padding:0;margin:0;}
</style>

...


 
Дата: Четверг, 28.07.2011, 17:49 |
Полковник
Группа: Помощники
Сообщений: 210
Награды: 0
Репутация: 11
Статус: Offline


Quote (likbezz)
Нет такого тега ... ) ... Ну вы даёте, как напишите ... так напишите ...
я не обратил внимания на него, заменил просто biggrin
Quote (likbezz)
только зачем заменять ещё и текст ... ??? это же не код ...
ты про "codeblock" и "quoteblock"? А я подумал что это какие-нибудь идентификаторы, которые не должны совпадать у code и quote. smile Спасибо, всё работает.


Сообщение отредактировал Komoff - Четверг, 28.07.2011, 17:56
 
Дата: Четверг, 28.07.2011, 20:56 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Quote (Komoff)
А я подумал что это какие-нибудь идентификаторы

- Да нет, это так ... больше для оформления.
На самом деле и в «codeblock» данный участок скрипта не обязателен - можно привязать к элементу DIV с индексом 1.
bbCodeName - имеет индекс «0» - первый элемент после «bbCodeBlock»
codeMessage - индекс «1» - второй ....

Quote (Code)
<!--uzcode-->
<div class="bbCodeBlock"><div class="bbCodeName" style="padding-left: 5px; font-weight: bold; font-size: 7pt;">Код: <a href="javascript://" onclick="selectCode(this);return false;">Выделить всё</a></div><div class="codeMessage" style="border: 1px inset; max-height: 200px; overflow: auto;"><!--uzc--><code><style type="text/css"> <br> #forumContent blockquote{padding:0;margin:0;} <br> </style></code><!--/uzc--></div></div>
<!--/uzcode-->


 
Дата: Среда, 02.05.2012, 10:45 |
SVP
Рядовой
Группа: Проверенные
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline


Добрый день.
На этом сайте я впервые. Искал в интернете программу, которая позволяла бы выделять текст по по клику.
Понравился скрипт _selectCode_v0.js. Но не знаю как сделать этот скрипт с расширениеи .exe (чтобы его можно было запускать каждый день). Помогите.
Заранее спасибо всем кто откликнется.


 
Дата: Среда, 02.05.2012, 12:40 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


SVP,
Quote (SVP)
о не знаю как сделать этот скрипт с расширениеи .exe (чтобы его можно было запускать каждый день).

Никак. Это JavaScript.
...


 
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Как сделать... » Как сделать выделение текста в Code по клику? (Реализация выделения кода по клику при помощи JavaScript)
  • Страница 1 из 1
  • 1
Поиск:


Мобильная версия