Техническая поддержка сервиса Quadro.Boards

Объявление

Новости сервиса

О форуме

Quadro.Support – это форум технической поддержки различных проектов и сервисов Quadro.Systems LLC, на котором грамотные технические специалисты всегда смогут помочь вам в решении проблем, или же подсказать ответы на самые сложные вопросы. Так же на форуме собрана обширная база знаний по различным аспектам наших сервисов. Не забывайте пользоваться поиском ;)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Поток сознания » Некорректная работа скриптов "выделение кода" и "якорная ссылка"


Некорректная работа скриптов "выделение кода" и "якорная ссылка"

Сообщений 1 страница 7 из 7

1

Проблема такова, при использовании скрипта якоря, выделение кода работает некорректно, т.е нажимаем выделить и перекидывает тут же в самый верх страницы. Если убрать скрипт якоря, выделение кода работает нормально.
Выделение кода

Код:
<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>

Якорная ссылка

Код:
<script type="text/javascript">
$('#post').find("#button-addition").after('<td id="button-aanchor"><img style="width: 20px!important; height: 20px!important; margin-left: 4px!important;" src="http://mybb.forum4.ru/files/0012/e8/7a/38504.png" title="Вставить якорь" id="button-aanchor" onclick=\"addanchor()\"></td><td id="button-anchor"><img style="width: 20px!important; height: 20px!important; margin-left: 4px!important;" src="http://mybb.forum4.ru/files/0012/e8/7a/97990.png" title="Вставить ссылку на якорь" id="button-anchor" onclick=\"anchoru()\"></td>');
function addanchor(){
 var adnchor = '';
 adnchor = prompt("Введите название якоря", "#");
 insert("[url&" + adnchor + "]" + adnchor + "[/url]\n");
}
function anchoru(){
 var anchorp = '';
 anchorp = prompt("Введите название якоря", "#");
 var anchorc = '';
 anchorc= prompt("Введите описание якоря", "Описание");
 insert("[url=http://anchor" + anchorp + "]" + anchorc + "[/url]\n");
}
$('.post-content').each(function(){
 $(this).find('p:contains("[url&#"),div[onclick]:contains("[url&#")').each(function(){
   var str=$(this).html();
   var val = str.replace(/\[url&amp;#[^\[\]]+\]#([^\[\]]+)\[\/url\]/img,'<a id="$1"></a>');
   if(val!=str)$(this).html(val);   
 });
 $(this).find('a[href*="//anchor"]').each(function(){
   var href=$(this).attr('href');
     href = href.split('#')[1];
     if(!!href){$(this).removeAttr('target');$(this)[0].href = '#'+href;
       var str = $(this).text();
       if(str.indexOf('http://')==0)$(this).text(href);
     }
 });
});
$('.post-content').find('a[href^="#"]').live('click', function(){
    var lnk = $(this).attr('href');
    var a=$('.post-content').find('a[id="'+lnk.substr(1)+'"]');
    b = a.parents('.spoiler-box').find('div[onclick]:first').not('.visible');
    if(b.length)b.click();
    setTimeout(function(){location.replace(document.URL.split('#')[0]+lnk)},10)
    return false;
});
</script>

Где же закрался косяк?

0

2

Нами
Попробуйте заменить в скрипте выделения
<a href="#" на <a href="/"

+1

3

Deff
Не, не прокатит, - будет перекидывать на Главную

0

4

Нами
Попробуйте заменить скрипт выделения кода на такой:

Код:
<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 style="cursor:pointer" onclick="select_text(this.parentNode.parentNode.childNodes[1].getElementsByTagName(\'pre\')[0]); return false;">Выделить код</a>';
	}
}
</script>

0

5

Alex_63 написал(а):

Не, не прокатит, - будет перекидывать на Главную

:flirt: C чего бы это ? - там return false стоит (Можешь в Опере заменить-попробовать в скрипте прям на текущей странице

Отредактировано Deff (19.04.2016 22:32:58)

+1

6

Deff написал(а):

Нами
Попробуйте заменить в скрипте выделения
<a href="#" на <a href="/"

Спасибо, все работает, как надо
какая мелочь а столько неудобства...

0

7

Deff написал(а):

C чего бы это ? - там return false стоит

:glasses: Ну если вверх  страницы выкидывает, я и подумал.. (просто было мое предположение

0


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Поток сознания » Некорректная работа скриптов "выделение кода" и "якорная ссылка"


Рейтинг форумов | Создать форум бесплатно © 2007–2016 «QuadroSystems» LLC