Выделение и копирование кода по клику (mkusher, Deff)
Выделение кода по клику © mkusher
Часто бывает неудобно на форумах выделять код, эти полосы прокрутки вечно мешают и плохо крутятся =(
Данный скрипт заменяет слово Код: вверху блока с кодом, на ссылку, по клику на который выделяется все содержимое блока с кодом
Код
<script type="text/javascript">
function select_text(elem) {
if(window.getSelection) {
var s=window.getSelection();
if(s.setBaseAndExtent){
s.setBaseAndExtent(elem,0,elem,elem.innerText.length-1);
}
else {
var r=document.createRange();
r.selectNodeContents(elem);
s.removeAllRanges();
s.addRange(r);
}
}
else if(document.getSelection){
var s=document.getSelection();
var r=document.createRange();
r.selectNodeContents(elem);
s.removeAllRanges();
s.addRange(r);
}
else if(document.selection){
var r=document.body.createTextRange();
r.moveToElementText(elem);
r.select();
}
}
</script>
<script type="text/javascript">
var div = document.getElementById('pun-main').getElementsByTagName('div');
for(x in div){
if(div[x].className=='code-box'){
div[x].getElementsByTagName('strong')[0].innerHTML = '<a href="#" onclick="select_text(this.parentNode.parentNode.childNodes[1].getElementsByTagName(\'pre\')[0]); return false;">Выделить код</a>';
}
}
</script>
function select_text(elem) {
if(window.getSelection) {
var s=window.getSelection();
if(s.setBaseAndExtent){
s.setBaseAndExtent(elem,0,elem,elem.innerText.length-1);
}
else {
var r=document.createRange();
r.selectNodeContents(elem);
s.removeAllRanges();
s.addRange(r);
}
}
else if(document.getSelection){
var s=document.getSelection();
var r=document.createRange();
r.selectNodeContents(elem);
s.removeAllRanges();
s.addRange(r);
}
else if(document.selection){
var r=document.body.createTextRange();
r.moveToElementText(elem);
r.select();
}
}
</script>
<script type="text/javascript">
var div = document.getElementById('pun-main').getElementsByTagName('div');
for(x in div){
if(div[x].className=='code-box'){
div[x].getElementsByTagName('strong')[0].innerHTML = '<a href="#" onclick="select_text(this.parentNode.parentNode.childNodes[1].getElementsByTagName(\'pre\')[0]); return false;">Выделить код</a>';
}
}
</script>
Для разработчиков - функция select_text( var DOM_object) принимает любой DOM объект и создает выделение в нем (если передать функции document.body то выделится вся страница)
Копирование в буфер обмена содержимого блоков код и
текстов cообщений при отправке/предпросмотре © Deff
текстов cообщений при отправке/предпросмотре © Deff
На Демо-сайте кликните на код в блоке код и попробуйте набить текст в поле ответа и отправить сообщение.
После попытки отправки сообщения (несмотря на фразу: из несанкционированного источника) у Вас в буфере обмена остаётся полный текст отправляемого сообщения).
В HTML верх
Цитата
<script>var swf_file='http://designforum.bestff.ru/files/000c/c1/da/68352.swf'</script>
<script type="text/javascript" src="http://designforum.bestff.ru/files/000c/c1/da/98903.js"></script>
<script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/mybbCopy_toClipboard.js"></script>
<style type="text/css">
.punbb .code-box strong a{
color:#2B6D9F;
}
.code-box strong:hover a{
text-decoration:none;
color:#000;
}
</style>
<script type="text/javascript" src="http://designforum.bestff.ru/files/000c/c1/da/98903.js"></script>
<script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/mybbCopy_toClipboard.js"></script>
<style type="text/css">
.punbb .code-box strong a{
color:#2B6D9F;
}
.code-box strong:hover a{
text-decoration:none;
color:#000;
}
</style>
Синим стиль для выделения кликабельной части в блоке "Код"
С ИЕ как всегда проблемы: если у всех можно копировать по умолчанию, у этого только после положительного ответа на вопрос.
Просмотров: 918, Загрузок: 29, Оценка: 5.0 (1)
Страницы: | |