Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Ru.Board » Общие вопросы по Ru.Board » Вставка цитаты

Модерирует : batva, DimoN

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тут что-то начинали обсуждать:
http://forum.ru-board.com/topic.cgi?forum=13&topic=0634&start=20
но все как-то и остановилось.
 
1. Что есть:
яваскрипт-функция explorer-only pasteQ(), которая вызывается посредством VBScript, что гарантирует то, что будет отрабатываться только для эксплорера:

Код:
function pasteQ(text){
  if (text !="") document.postform.post.value = document.postform.post.value + "[q]" + text + "[/q]\n";
}
и на страницах
Код:
<SCRIPT language=JavaScript>
             if (navigator.appVersion.indexOf("MSIE")!= -1) {document.writeln("<a class=tpc title='Для вставки цитаты в форму ответа, выделите ее, и нажмите сюда' href='VBScript:pasteQ(document.selection.createRange().Text)'>Цитировать</a>")}
             else {document.writeln("<span class=tpc>Цитировать</span>")}
             </SCRIPT>  

 
2. Что предлагаю:
- сделать вставку цитаты возможной тж в нетскейпах 4.0-7.0, Мозилле;
- во всем остальном, поддерживающем JavaScript добавить возможность вставки "[q][/q]", чтоб лишний раз не переключать раскладку, когда хочешь кого-то процитировать под операми и тп.
 
3. Как это сделать:
используем JavaScript.
при наведении на ссылку "Цитировать" вызываем функцию копирования выделенного текста, при нажатии на ссылку вставляем текст.
т.е. ссылка приобретет вид:
 
<a class=tpc title='Для вставки цитаты в форму ответа, выделите ее, и нажмите сюда'  onmouseover="copyQ();" href="javascript:pasteQ();">Цитировать</a>  
 
для проверки необходимости вывода текста "Для вставки цитаты, выделите её и нажмите эту ссылку." возле textarea воспользоваться проверкой поддержки возможности копировать выделенный текст:
if (document.selection||document.getSelection) {Q=true} else {var Q=false}
и на странице: <script language=JavaScript>if (Q) document.writeln('Для вставки цитаты, выделите её и <a  onmouseover="copyQ();" href="javascript:pasteQ();">нажмите эту ссылку</a>.')
</script>
 
код необходимых функций:

Код:
 
var txt=''
function copyQ() {
txt=''
if (document.getSelection) {txt=document.getSelection()}
else if (document.selection) {txt=document.selection.createRange().text;}
txt='[q]'+txt+'[/q]'}
function pasteQ() {
document.postform.post.value=document.postform.post.value+txt;
}
if (document.selection||document.getSelection) {Q=true} else {var Q=false}
 

 
проверено на работоспособность:
--вставляет выделенное в:
  • Opera 7.0 beta (слава великому Кobold'у, что сообщил)
  • netscape 4.0-7.0,
  • msie 5.0-6.0 (должно работать тж в 4.0),
  • mozilla 1.0,
  • hotjava 3.0, только кому она нужна

--вставляет просто "[q][/q]" в:
  • opera 3.51-6.05,
  • msie 3.0

--netscape 2.0-- ругается, но это уж слишком антикварный зверь, netscape 3.0-- не поддерживает вынесение скриптов в отдельный файл.
 
в действии можно посмотреть на
http://svarga.pisem.net/ru-board/pasteQ/topic.html
 
(уж извините, коды счетчиков и баннеров убрал;) )

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 03:22 13-11-2002 | Исправлено: Svarga, 02:52 15-11-2002
Kobold



Flame monster
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подтверждаю полную работоспособность скрипта в Opera 7.0 beta

----------
Tanned in cathode ray sunshine

Всего записей: 1838 | Зарегистр. 11-12-2001 | Отправлено: 08:55 13-11-2002 | Исправлено: Kobold, 08:56 13-11-2002
DimoN



Tech administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
Сенкс за код.
 
Ок. Поставим.
 
Добавлено
Svarga
Как я понял ты хорошо шаришь в жаба-скрипте?
 
А как бы делать вставку в то место где стоит курсор?
и возможно чтобы это пахало в других браузерах?

----------
Мы Баним с улыбкой :) ™

Всего записей: 7528 | Зарегистр. 19-04-2001 | Отправлено: 13:18 13-11-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DimoN

Цитата:
 А как бы делать вставку в то место где стоит курсор?
и возможно чтобы это пахало в других браузерах?

по-моему никак, если не ошибаюсь.
из текстовых полей можно считывать только весь текст, а потом уже что-то с ним делать.
 
Хотя поковыряюсь, может что и найду эксплорерное (в нетскейпах этого точно нет). Еще неплохо пораспрашивать VBScripter'ов, может в VB что-то и есть такое.
 
Kobold,
а я вот что-то проспал появление Opera 7.0 beta...  
там как именно работает, вставляет цитату или только [q][/q]?
 
если цитату, то глобально народ поработал, видать -- поддержка getSelection появилась, а если нет-- то обидно.
(стремительно запуская старомодный вампир) побежал качать
 

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:00 14-11-2002 | Исправлено: Svarga, 08:51 14-02-2003
Kobold



Flame monster
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
Вставляется цитата, полностью. Поработали они там действительно хорошо. И ты тоже

----------
Tanned in cathode ray sunshine

Всего записей: 1838 | Зарегистр. 11-12-2001 | Отправлено: 10:18 14-11-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DimoN
перекопал все, что у меня есть по JavaScript'y и JScript'y.
Итог:

Цитата:
Setting the focus of a text field or TEXTAREA does not, by itself, enable you to place the cursor at any specified location in the field. The cursor usually appears at the beginning of the text.  
JavaScript® Bible, Gold Edition 2001 © Danny Goodman (Published by Hungry Minds, Inc.) p.57

 в 4+ эксплорере можно передвинуть курсор с помощью move("unit"[, count]) на нужное количество символов. да вот беда %( текущую позицию его (номер символа перед или после которого стоит курсор) определить нельзя-- позиция курсора в скриптах измеряется исключительно в пикселах по осям X и Y страницы. ;(
 
Короче, нельзя ни JScript'ом, ни JavaScript'ом такого сделать (по крайней мере, предусмотренные их создателями пути отсутствуют).
 
в принципе, выделенный текст можно поместить в любое место в форме вручную Drag&Drop'ом;) (IE 5+, может и меньше, Мозилла-- под виндой точно, 'nix и mac'овые браузеры-- фиг его знает)-- выделяем нужный текст и перетягиваем его в нужное место в textarea.  
Можно добавить функцию, которая будет onDragStart копировать выделенное, а onDragOver считывать, что получилось в textarea и парсить текст на предмет соответствия выделенному тексту, при полном совпадении-- ставить [q]в начале найденного соответствия и [/q] в конце, кроме того ставить в эксплорере курсор после вставленного фрагмента (с помощью move() ).
 
только это слишком замороченно-- в 5х эксплорерах возможны глюки, кроме того, не исключены проблемы с обработкой большого объема текста (вроде страшных тормозов или сообщений эксплорера, что браузер вот-вот зависнет, если не остановить все скрипты).
 
Добавлено
Kobold
и вправду работает в 7-й опере!!!
 
я аж отредактирую первое сообщение.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:35 15-11-2002
NesterovML

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
Tak chto kuda stavit' nugno, chtoby v Opera 7 rabotalo zitirovanije? Nado u sebja v Browsere cho-to menjat' ili na stranize sajta (vladelez sajta) menjat' nado? Proshe govorja, kuda etot kod lepit' nado?
Spasibo.

Всего записей: 387 | Зарегистр. 30-05-2002 | Отправлено: 15:04 06-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NesterovML
да нет-- нужно менять генерируемый html-код в исходниках форума...
само собой только администрация борды такое сделать может-- локально ничего не сделаешь ;(

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:36 15-12-2002
Sebian



Negotiator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, если позволите, вопрос по цитатам: можно ли сделать так, чтобы вставлялся не только текст из цитируемого поста, но и смайлы?

----------
Может, это все и не слишком готично, зато вполне себе гламурно © dg
ЖЖ

Всего записей: 4333 | Зарегистр. 23-07-2001 | Отправлено: 11:02 15-12-2002
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня перестала работать вставка цитат! SOS! IE просто не вставляет, а опера говорит "not supported". вчера ещё работала в IE

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 17:32 15-12-2002
Demetrio

uid=0
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WRFan
Опера перестанет у тебя это говорить, если снимешь галочку Identify as MS Internet Explorer.
А насчёт того что в IE не работает - вспоминай что с системой делал, может чего испортилось........

Всего записей: 9967 | Зарегистр. 29-05-2002 | Отправлено: 18:44 15-12-2002
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а, всё, заработало, это webwasher (webwasher.com) выключал:
 
prevent supplementary modification of address  
 
надо выключить

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 21:10 15-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sebian

Цитата:
можно ли сделать так, чтобы вставлялся не только текст из цитируемого поста, но и смайлы?

нет--  
JavaScript'ом можно только текст копировать без картинок (а также таблиц и всего остального html'я).
А было бы неплохо

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:28 16-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DimoN
ты спрашивал: "как бы делать вставку в то место где стоит курсор?"
Выяснил наконец-то.
В каких версиях эксплорера будет работать пока не знаю-- днями поковыряю, внесу изменения в скрипт вставки цитаты.


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:10 18-12-2002 | Исправлено: Svarga, 01:55 22-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
день добрый!
 
Добавил в скрипт возможность вставлять цитату туда, где в текстовом поле стоит курсор (работает только в MSIE 5.5+).
 
Обновленный код имеет такой вид (все изменения выделены красным):

Код:
if (document.selection||document.getSelection) {Q=true} else {var Q=false}
var txt=''
var pos=''
 
function curPos(){
 var bk=document.postform.post.value
 if (bk!='') {
 document.selection.createRange().text='¬';
  pos = document.postform.post.value.search('¬');
  document.postform.post.value=bk
  }
}

 
function copyQ() {
txt=''
if (document.getSelection) {txt=document.getSelection()}
else if (document.selection) {txt=document.selection.createRange().text;}
txt=' [q]'+txt+'[/q] '}
 
function pasteQ() {
if (pos!='') {
var val=document.postform.post.value
document.postform.post.value =val.substring(0,pos)+ txt+val.substring(pos,val.length);
else {

document.postform.post.value  += txt;
}}
 

в <textarea> формы отправки следует добавить такое событие:
Код:
<textarea cols=70 rows=15 wrap="soft" name="post" onBeforeDeactivate="vbscript:curPos()"></textarea>

(+ так же, как предлагал до этого на такое

Код:
<script language=JavaScript>if (Q) document.writeln('Для вставки цитаты, выделите её и <a  onmouseover="copyQ();" href="javascript:pasteQ();">нажмите эту ссылку</ a>.'
заменить этот код возле формы ответа:
Код:
<script language=JavaScript>if (navigator.appVersion.indexOf("MSIE")!= -1) document.writeln("Для вставки цитаты, выделите её и <a href='VBScript:pasteQ(document.selection.createRange().Text)'>нажмите эту ссылку</a>.")</script>
и код в каждом сообщении
Код:
<SCRIPT language=JavaScript>
             if (navigator.appVersion.indexOf("MSIE")!= -1) {document.writeln("<a class=tpc title='Для вставки цитаты в форму ответа, выделите ее, и нажмите сюда' href='VBScript:pasteQ(document.selection.createRange().Text)'>Цитировать</a>")}
             else {document.writeln("<span class=tpc>Цитировать</span>")}</SCRIPT>
заменить на
Код:
<a class=tpc title='Для вставки цитаты в форму ответа, выделите ее, и нажмите сюда'  onmouseover="copyQ();" href="javascript:pasteQ();">Цитировать</a>  
)

 
Добавлено
пример в действии находится здесь
Просьба ко всем, у кого стоит MSIE 5.5 и MSIE6.0 проверить на работоспособность!

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:59 22-12-2002 | Исправлено: Svarga, 02:47 22-12-2002
QuickeneR

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MSIE 6.00.2600 (XP SP0) - работает. Opera 7 beta 1 - вставляет только в конец сообщения. Ну да ладно, все равно у меня javascript отключен
Наверное уже пора использовать такой способ цитирования на ru-board, а не только при обсуждении фонетических особенностей языка криничей, а?

Всего записей: 1388 | Зарегистр. 02-02-2002 | Отправлено: 17:17 22-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QuickeneR

Цитата:
Opera 7 beta 1 - вставляет только в конец сообщения.  Ну да ладно, все равно у меня javascript отключен
ну да-- туда, где стоит курсор, должно вставлять только в 5.5 и 6.0 эксплорерах (может потом получится и для 5-го сделать).
Спасибо, что посмотрел-- а то у меня в виртуальной машине, когда в 6-м проверяю-- какое-то непонятное окно пытается появиться-- то ли коряво эксплорер стал, то ли на майкрософт до сих пор хочет ломиться %)

Цитата:
Наверное уже пора использовать такой способ цитирования на ru-board, а не только при обсуждении фонетических особенностей языка криничей, а?

да я и сам такого же мнения %)-- а то как-то уже поднадоело ctrl-shift>>[q][/q] постоянно использовать

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 00:42 23-12-2002
DimoN



Tech administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ослик 6 - пашет
НетКаптор с тем же осликом - нет
 


----------
Мы Баним с улыбкой :) ™

Всего записей: 7528 | Зарегистр. 19-04-2001 | Отправлено: 16:09 23-12-2002
Sebian



Negotiator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так что с цитатами - они теперь вставляются в место позиционирования курсора или нет?

----------
Может, это все и не слишком готично, зато вполне себе гламурно © dg
ЖЖ

Всего записей: 4333 | Зарегистр. 23-07-2001 | Отправлено: 17:04 23-12-2002
DimoN



Tech administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sebian
 
Цитата:
Так что с цитатами - они теперь вставляются в место позиционирования курсора или нет?

должна
 
осталось вставлять ник в место курсора :)

----------
Мы Баним с улыбкой :) ™

Всего записей: 7528 | Зарегистр. 19-04-2001 | Отправлено: 17:32 23-12-2002
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Ru.Board » Общие вопросы по Ru.Board » Вставка цитаты


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru