Как сделать выделение текста в Code по клику?
|
|
|
2011-07-27Дата: Среда, 27.07.2011, 06:42 | Сообщение # 1 |
Аццкий кодер
Группа: Администраторы
Статус: 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?>
Работает примерно так: - кликнете по ссылке «выделить всё», текст выделится.
Скрипт в прикреплении. ...
| | |
|
|
2011-07-28Дата: Четверг, 28.07.2011, 11:44 | Сообщение # 2 |
Полковник
Группа: Помощники
Статус: 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}}; Вроде заменил всё, но не выделяет. Что-то лишнее заменил? Или чего-то не правильно?
| | |
|
|
2011-07-28Дата: Четверг, 28.07.2011, 11:53 | Сообщение # 3 |
Аццкий кодер
Группа: Администраторы
Статус: 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> ...
| | |
|
|
2011-07-28Дата: Четверг, 28.07.2011, 17:49 | Сообщение # 4 |
Полковник
Группа: Помощники
Статус: Offline
|
Quote (likbezz) Нет такого тега ... ) ... Ну вы даёте, как напишите ... так напишите ... я не обратил внимания на него, заменил просто Quote (likbezz) только зачем заменять ещё и текст ... ??? это же не код ... ты про "codeblock" и "quoteblock"? А я подумал что это какие-нибудь идентификаторы, которые не должны совпадать у code и quote. Спасибо, всё работает.
Сообщение отредактировал Komoff - Четверг, 28.07.2011, 17:56 | | |
|
|
2011-07-28Дата: Четверг, 28.07.2011, 20:56 | Сообщение # 5 |
Аццкий кодер
Группа: Администраторы
Статус: 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-->
| | |
|
|
2012-05-02Дата: Среда, 02.05.2012, 10:45 | Сообщение # 6 |
Рядовой
Группа: Проверенные
Статус: Offline
|
Добрый день. На этом сайте я впервые. Искал в интернете программу, которая позволяла бы выделять текст по по клику. Понравился скрипт _selectCode_v0.js. Но не знаю как сделать этот скрипт с расширениеи .exe (чтобы его можно было запускать каждый день). Помогите. Заранее спасибо всем кто откликнется.
| | |
|
|
2012-05-02Дата: Среда, 02.05.2012, 12:40 | Сообщение # 7 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
SVP, Quote (SVP) о не знаю как сделать этот скрипт с расширениеи .exe (чтобы его можно было запускать каждый день). Никак. Это JavaScript. ...
| | |
|