Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 05/07/05 10:01 AM |
|
После того, как мне указали на такую возможность в Файрфоксе, меня не покидала мысль, как это реализовать в Опере. И сделал. Заодно добавил стирание элемента страницы жестом.
Есть букмарклет на ОпераВики, но посмотрев его самого и его код, обнаружил, что он увеличивает размер у всех TEXTAREA, что при нескольких полях приведёт к прыганью макета, чего хотелось бы избежать.
Чтобы однозначно идентифицировать именно нужное поле, приделывается пользовательский скрипт. Есть подозрения, что вы с него поимеете побочные эффекты, но это потом исправлю. Сначала пусть народ заценит как работает.
Как это работает:
Жест "протянуть направо" на многострочном поле (TEXTAREA), увеличивает ширину поля. "Протянуть налево" -- уменьшает ширину.
Аналогично для жестов "протянуть вверх" и "протянуть вниз", они увеличивают/уменьшают высоту поля.
Вот что надо для этого сделать:
1. Скопировать два файла: пользовательский скрипт "lastHovered.js" и файл настройки мышиных жестов "resize and hide textareas.ini".
2. Пользовательский скрипт с путём, куда вы его положили, внести в ваш список скриптов в настройках.
3. Настройку мышиных жестов положить в папку "profile\mouse\". Если у вас уже есть своя настройка, объедините её текстовым редактором, там добавляются всего пять новых жестов: в разделе "Advanced"--"Edit widget" -- четыре, и в "Application" -- один сразу после заголовка.
Вот этот последний жест -- полный оборот по часовой стрелке, начиная с протяжки вверх (вверх-направо-вниз-влево) уничтожает элемент со страницы. В принципе, если этот жест выкинуть, то можно предполагать что побочные эффекты пользовательского скрипта сведуться на нет.
Есть мнение, что функционал можно расширить. Рацухи?
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Stinger 05/07/05 12:17 PM |
|
Отличная идея. А почему в раздел "Флейм" запостил? Это же новая фича Оперы . Этот солюшн достоин занять свое место в основном разделе форума, в FAQ и в Мастерской.
Проверил на работоспособность. По первым впечатлениями все работает с точностью отлаженного механизма. Resize текущего текстового поля можно делать по все четырем направлениям, уничтожение элемента также функционирует без особых проблем. О каких именно "побочных эффектах" ты говоришь?
В ответ на: 2. Пользовательский скрипт с путём, куда вы его положили, внести в ваш список скриптов в настройках.
Насколько я понимаю, подключить пользовательский JS-файл можно только один. У меня же несколько разных по назначению скриптов находятся в одном JS-файле:
1. Flash панель от VVSite
2. Скрипт для перевода "нестандартного" тэга ALT для картинок в тэг TITLE
3. Теперь добавил твой lastHovered.js
Все три скрипта прекрасно работают из одного файла.
В ответ на: Application" -- один сразу после заголовка.
Жест уничтожения элементов разумнее добавить в раздел жестов "Document Window". Мы же только на страницах убираем лишнее, поэтому трогать все приложение(Application) нет никакого смысла.
В ответ на: Есть мнение, что функционал можно расширить. Рацухи?
1. Возможно ли сделать управление resize'ом при помощи клавиатурных шорткатов? Как заставить JS-файл обрабатывать тот textarea, в котором находится клавиатурный курсор?
2. Жаль что в Опере нет мышиных жестов жестов по диагонали . Есть идеи с ними связанные, но в данный момент никак не реализуемые.
P.S: Спасибо за реализацию отличной идеи.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Kildor 05/07/05 03:43 PM |
|
В ответ на: Насколько я понимаю, подключить пользовательский JS-файл можно только один. У меня же несколько разных по назначению скриптов находятся в одном JS-файле:
неверно User JavaScript File=D:\Opera75\js\user.js,D:\Opera75\js\opera;opera,D:\Opera75\js\greasemonkey;greasemonkey
Суть понятна?
user.js — главный скрипт js\opera\ — папка, скрипты из которой имеют доступ к window.opera.addEventListener(string: type,function: handler,bool: phase), opera.defineMagicFunction(string: functionName,function: replacementFunction) и opera.defineMagicVariable(string: variableName,function: getter,function: setter)
js\greasemonkey\ — папка со скриптами из файрфоксового гризимонкей плагина. Не имеют доступа к opera.*, и кое какие отличия есть ещё
PS: У меня крутятся следующие скрипты: Flash панель, Alt » Title (тот же что и у тебя) SafeAlert — каждые 5 алертов на странице вылазит вопрос о том, что „не пора ли прекратить это безарбузие“… textfix.js — „ * This script makes URLs in text/plain documents clickable“ — надеюсь понятно… ;-) bodyIDforAll — прописывает id для тега body, чтоб удобнее было бы применять user css addCitationLinks — добавляет ссылку на атрибут cite в <blockquote> FULL cloacking — полностью сменяет идентификацию браузера (в том числе и window.opera, и так далее.) lj_tags — добавляет панель с тегами для текстарий в ЖЖ.
Сейчас ещё и этот добавлю…
Есть ещё несколько скриптов, которые хочу подключить, но они пока в нерабочем состоянии…
|
PS:
|
Kildor 05/07/05 03:44 PM |
|
_//www.opera.com/support/tutorials/userjs/_ — официальный туториал по ujs
|
PPS:
|
Kildor 05/07/05 04:15 PM |
|
не всегда он работает нормально Попробуй поизменять размеры арий с прописанными в стилях width и height, у меня Опера благополучно забивает на твои row+=5 и cols+=5 в этих случаях.
|
Re: PPS:
|
Stinger 05/07/05 05:00 PM |
|
В ответ на: SafeAlert — каждые 5 алертов на странице вылазит вопрос о том, что „не пора ли прекратить это безарбузие“…
textfix.js — „ * This script makes URLs in text/plain documents clickable“ — надеюсь понятно… ;-)
bodyIDforAll — прописывает id для тега body, чтоб удобнее было бы применять user css
addCitationLinks — добавляет ссылку на атрибут cite в <blockquote>
FULL cloacking — полностью сменяет идентификацию браузера (в том числе и window.opera, и так далее.)
lj_tags — добавляет панель с тегами для текстарий в ЖЖ.
Где взять это добро? В особенности интересует textfix.js. Через google ничего не ищется.
|
Re: PPS:
|
Kildor 05/07/05 05:53 PM |
|
конкретно текстфикс — _//virtuelvis.com/archives/2005/04/textlinks_ вообще, погляди на этот сайт — неплохая подборка инфы по опере. _//www.howtocreate.co.uk/operaStuff/userJavaScript.html_ — тут вроде бы что-то есть _//nontroppo.org/wiki/UserJS_ — тут тоже что-то есть.
|
Re: PPS:
|
profiT 05/09/05 08:08 AM |
|
В ответ на: А почему в раздел "Флейм" запостил?
А куда вообще такие идеи складывать? В "Опера для Виндоус"? Или в "Опера для Линукс"? Работать-то эти скрипты будут везде. И уж всяко не в ветку про почту. Не сообразил куда, вот и написал откуда точно не прогонят.
В ответ на: Насколько я понимаю, подключить пользовательский JS-файл можно только один.
Согласно ОпереВике и Haavard'у можно и несколько. На себе опробовал -- работает. Странный синтаксис, но работает.
Несколько файлов:
Code:
c:\userJS\1.js,c:\userJS\2.js,c:\userJS\3.js
Все файлы с типом js из папки "c:\userJS\":
Code:
c:\userJS;userJS
Обратите внимание. Название последней папки без бэкслэша, и с повтором её имени через точку с запятой.
Можно комбинировать:
Code:
c:\temp\main.js,c:\userJS;userJS,c:\program files\mozilla firefox\greasemonkey\scripts;scripts
Перезагружать Оперу после изменения списка ползовательских скриптов или изменении какого-то из скриптов не надо.
В ответ на: О каких именно "побочных эффектах" ты говоришь?
Да это я сглупил. Отменяются "побочные эффекты". Мне показалось, что мой обработчик будет перекрывать уже существующие, но потом понял что ошибался -- на самом деле метод "attachEvent" ставит один обработчик за другим в очередь.
В ответ на: Жест уничтожения элементов разумнее добавить в раздел жестов "Document Window".
А и точно. Исправил-с. Берите обновлённую версию экстеншена к Опере "Resize TextArea 0.03" (хе-хе) в прикреплённом файле.
Заодно добавил восстановление всех уничтоженных элементов противоположным жестом: полный оборот против часовой стрелки, начиная с протяжки вниз (вниз--вправо--вверх--влево).
Заметьте, что, пусть для выполнения полных оборотов и нужен простор, но удалять можно и мелкие элементы: удаляемый элемент определяется по начальной точке жеста.
В ответ на: Возможно ли сделать управление resize'ом при помощи клавиатурных шорткатов? Как заставить JS-файл обрабатывать тот textarea, в котором находится клавиатурный курсор?
Надо добавить эту строчку:
Code:
obj.attachEvent('onFocus',doOnLastHoveredElement);
после строчки с 'onMouseOver'. Сделать это -- но проблемо. Проблемо состоитто в томо, чтобы найти незанятую и простую комбинацию для ресайза поля клавишами. Ctrl+Right -- занято, Shift+Right -- занято, может быть Ctrl+Alt+Right?
В ответ на: Жаль что в Опере нет мышиных жестов жестов по диагонали.
Да я и с четырьмя направлениями едва их запоминаю. Жать на кнопки в панелях мне как-то проще и нагляднее.
В ответ на: не всегда он работает нормально
Ага, есть такое. Так как привязывание всем элементам страницы обработчика занимает некоторое время (две секунды -- минимум, в завимости от сложности страницы может доходить до пяти-шести, это пока рекорд).
В ответ на: Попробуй поизменять размеры арий с прописанными в стилях width и height, у меня Опера благополучно забивает на твои row+=5 и cols+=5 в этих случаях.
Будем пробовать. Ждите следующей версии, у меня есть идеи на реализацию. Вот вспомню DOM до конца и будет.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Dennis_HAWKS 05/11/05 09:25 AM |
|
Есть скрипт на greasemonkey - называется Expand TextArea - позволяет увеличивать textarea - в опере почему-то не работает. Может кто-то из JS гуру глянет его? _//www.stilleye.com/expandArea.user.js_
у меня у самого стоят: alt2title.js - для исправления ошибок долбанутых веб-дезигнеров, которые не соблюдают стандарты и ставят атрибут alt вместо title для изображений. dingbats.js - конвертирует декоративные (dingbat) символы в соответствующие Юникодовые. fixbgb.js - ради ответного прикола создает надпись на сайте _//www.bengoodger.com/weblog/_ такого содержания: Code:
The page you are reading is written by a narrow minded Firefox fanboy who does not like the fact that the browser you are using supports more CSS than Firefox. As a result, this page would normally contain a lie about Opera, but this has been removed by Opera's User JavaScript. Enjoy :)
fixtextplain.js - фиксит те сайты, страницы которых открываются в виде текстового кода из-за ошибочной настройки MIME-типов сервера. hide_google_adsense.user.js - прячет Google Adsense hide-adsense.js - тоже самое. удалить что ли один? menufix.js - фиксит некоторые неработающие менюшки на сайтах. Штука суперская. nofollow.js - добавляет декорацию nofollow линков перечеркиванием propagate_titles.js - улучшает подсказки на некоторых сайтах, особенно на форумах. safealert.js - описание уже было. sighider.user.js - прячет подпись юзеров на phpBB-форумах (а именно кучу изображений в подписи со всей подписью) sitesig.js - добавляет подпись для каждого сайта для управления ксс применительно для данного сайта. textfix.js - описание уже было. uhb.js + кнопка - делает выделение в результах поиска
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Stinger 05/11/05 08:53 PM |
|
profiT
В ответ на: Надо добавить эту строчку: Code: obj.attachEvent('onFocus',doOnLastHoveredElement);
К сожалению не работает. У тебя есть еще идеи насчет того, как можно управлять ресайзом при помощи клавиатуры?
Dennis_HAWKS
В ответ на: у меня у самого стоят:
Брось пожалуйста эти JS-скрипты в аттаче одним архивом на форум. Многим пригодится.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Kildor 05/12/05 02:12 AM |
|
кто знает английский, вот вот заработает _//userJS.org_ _//virtuelvis.com/archives/2005/05/waiting-for-userjs-org_
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Dennis_HAWKS 05/12/05 06:07 AM |
|
Kildor
Угу, эта надпись уже как минимум две недели там висит.
Скрипты в приаттаченном архиве.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 05/14/05 08:31 AM |
|
Вчера ночью сидел, парился.
В ответ на: obj.attachEvent('onFocus',doOnLastHoveredElement);
К сожалению, не работает. У тебя есть еще идеи насчет того, как можно управлять ресайзом при помощи клавиатуры?
То ли с onFocus'ом, то ли с присвоением сразу двух обработчиков событий на один объект в одно время непонятные проблемы. Но!
Можно сделать так: "Right ctrl alt" вписать в раздел "Application" (иначе работать не будет, всё равно это сокращение в Опере не занято), на него посадить действие расширения поля (скопируйте из GestureRight). Тогда это сокращение будет работать когда курсор нависает над полем. Нормально?
В ответ на: Попробуй поизменять размеры арий с прописанными в стилях width и height, у меня Опера благополучно забивает на твои row+=5 и cols+=5 в этих случаях.
Теперь скрипт размеры в стилях перебивает.
Вот, расхвалил свой скрипт, а показать и нечего -- дома забыл.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Karfax 05/14/05 11:05 PM |
|
В ответ на: Насколько я понимаю, подключить пользовательский JS-файл можно только один.
Сколько угодно (во всяком случае в 8-й версии, в других не смотрел). Заходишь в Настройки\Дополнительные\Содержание\Кнопка "Настройки JavaScript" и в поле "Мои JavaScrip файлы" выставляешь ПУТЬ К ПАПКЕ со скриптами. Потом кидай в эту папку сколь угодно скриптов.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Stinger 05/16/05 11:21 PM |
|
profiT
В ответ на: То ли с onFocus'ом, то ли с присвоением сразу двух обработчиков событий на один объект в одно время непонятные проблемы. Но!
Можно сделать так: "Right ctrl alt" вписать в раздел "Application" (иначе работать не будет, всё равно это сокращение в Опере не занято), на него посадить действие расширения поля (скопируйте из GestureRight). Тогда это сокращение будет работать когда курсор нависает над полем. Нормально?
Ресайз с клавиатуры все-равно не работает. Я пробовал закомментировать строчку с "onMouseOver" - результат тот же. Если оставить обе строки, тогда перестает работать ресайз мышинными жестами.
В ответ на: Теперь скрипт размеры в стилях перебивает.
Закинь сюда. Когда до дома доберешься .
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
aga 05/17/05 04:15 PM |
|
у меня не работает расширение при отключённом использовании текущей страницы, это так и должно быть или у меня какие-то проблемы?
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 05/19/05 05:05 AM |
|
В ответ на: Закинь сюда.
Проверяйте. Я снёс функционал удаления элементов страницы, потому что он сейчас он идёт в активной отладке и страшно сырой. Кстати, удаления элементов страницы вообще кого-нибудь интересует? Platipus! (Файрфоксово расширение такое) я вам не обещаю, но что-то где-то хоть чуть-чуть...
В ответ на: Перезагружать Оперу после изменения списка ползовательских скриптов или изменении какого-то из скриптов не надо.
Уточнение: перезагружать, чтобы заработал обновлённый скрипт надо. Но не всю Оперу, а просто страницу. Если жалко трафика, жмите "Обновить из кэша".
В ответ на: у меня не работает расширение при отключённом использовании текущей страницы
Э-э-э, извините, я что-то не могу сообразить про что вы. Перефразируйте, пожалуйста.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Kildor 05/19/05 06:22 AM |
|
В ответ на: у меня не работает расширение при отключённом использовании текущей страницы, это так и должно быть или у меня какие-то проблемы?
Это так и должно быть…
В ответ на: Э-э-э, извините, я что-то не могу сообразить про что вы. Перефразируйте, пожалуйста.
Alt-P » Advanced » Browsing » Reuse existing page — сними галку, и посмотри…
Работать не будет, ибо вызывается фунцкии через javascript:() протокол, и при снятой галке будет при этом открываться новое окно…
Кстати, это в виш к опере надо — возможность вызывать фунцкии из user js отдельной командой, не зависящей от этой настройке…
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
van_grieg 05/19/05 06:23 AM |
|
В ответ на: Кстати, это в виш к опере надо
Надо. Я говорил об этом, мне ответили - "А что, кто-то снимает эту галку?"
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 05/19/05 06:44 AM |
|
В ответ на: возможность вызывать фунцкии из user js отдельной командой, не зависящей от этой настройке
Ну, наверное, не только функции из user js, а любую последовательность Яваскрипта. Хорошо бы отдельную Оперную команду. Кистати, а может кто из присутствующих посоветует, как следует избегать возможных конфликтов имён в пользовательских скриптах -- а вдруг кто-то другой в своём скрипте даст такие же названия функциям? Вписывать в отдельный класс?
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
aga 05/19/05 07:26 AM |
|
В ответ на: Надо. Я говорил об этом, мне ответили - "А что, кто-то снимает эту галку?"
а что, кто-то пользуется этой галкой? использование существующей страницы ведь довольно неудобно, собенно при ткрытии закладок, поиске выделенного слова и т.п.
В ответ на: Кстати, это в виш к опере надо
и куда это?
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Dennis_HAWKS 05/21/05 07:34 AM |
|
Ура наконец-то появился работающий скрипт для увеличения textarea - дали здесь - _//my.opera.com/forums/showthread.php?s=&postid=937176#post937176_
См. вложенный файл.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Stinger 05/21/05 11:51 AM |
|
В ответ на: Ура наконец-то появился работающий скрипт для увеличения textarea - дали здесь - _//my.opera.com/...post937176_
См. вложенный файл.
Чем же он лучше предыдущих? Может у Profit'а покруче будет.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Dennis_HAWKS 05/21/05 11:58 AM |
|
Внизу в правом нижнем крае экрана появляется квадратик, на него нажимаешь - возле textarea появляется 2 кнопочки типа - красная и синяя. Синюю нажимаешь мышкой, держишь и тянешь - textarea меняется. Красная - вернуть размер textarea в исходный.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 05/21/05 12:00 PM |
|
В ответ на: Чем же он лучше предыдущих? Может у profiT'а покруче будет.
Не-а. Моё хуже, и возни с ним больше. Опять же изменение размера не произвольно. А тут -- просто положили в вашу папку скриптов этот файлик -- и всё, больше делать ничего делать не надо. Появляется такая пимпочка снизу-справа и тяните её насколько хотите чтобы был размер поля.
Ещё немаловажно то, что скрипт этот межбраузерный, и для Файрфокса и для Оперы.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Dennis_HAWKS 05/21/05 12:05 PM |
|
В ФФ уже не работает - там чел изменил его, чтобы он работал в Опере, но тем самым он перестал работать в ФФ.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Stinger 05/21/05 12:23 PM |
|
Dennis_HAWKS
В ответ на: Внизу в правом нижнем крае экрана появляется квадратик, на него нажимаешь - возле textarea появляется 2 кнопочки типа - красная и синяя.
Квадратик так и будет все время болтаться в правом нижнем углу? Хмм.. у меня там вообще-то находится панель автозаполнения форм. Да и место загораживать будет - нехорошо.
Разумнее сделать чтобы красная и синяя кнопочки появлялись при наведении мыши на форму (или например когда ставишь в форму курсор ввода). Что нужно поправить в скрипте чтобы этого добиться?
В идеале было бы круто, если бы измененный размер отдельных форм для отдельных страничек сохранялся бы в кукисах...
profiT
В ответ на: Не-а. Моё хуже, и возни с ним больше.
Кстати мышинными жестами ресайзить очень удобно. К тому же твой скрипт теперь вроде любые формы может ресайзить(по твоим заверениям). Жаль что так и не получилось научить скрипт управлять ресайзом при помощи клавиатурных шорткатов .
В ответ на: Кстати, удаления элементов страницы вообще кого-нибудь интересует? Platipus!
Интересует! Пожалуйста не бросай это хорошее начинание.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 05/21/05 12:31 PM |
|
В ответ на: Кстати мышинными жестами ресайзить очень удобно. К тому же твой скрипт теперь вроде любые формы может ресайзить(по твоим заверениям).
В ответ на: Жаль что так и не получилось научить скрипт управлять ресайзом при помощи клавиатурных шорткатов .
Подождите, а вы скачали новую версию? Я тут вроде размещал. Там, в архиве, и ReadMe есть.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
Dennis_HAWKS 05/21/05 12:47 PM |
|
Stinger
В ответ на: Квадратик так и будет все время болтаться в правом нижнем углу?
Да. Мне удобно, я не использую автозаполнялку.
В ответ на: Да и место загораживать будет - нехорошо
Ты бы хоть поставил его и посмотрел сколько там места он занимает.
В ответ на: Разумнее сделать чтобы красная и синяя кнопочки появлялись при наведении мыши на форму (или например когда ставишь в форму курсор ввода).
зачем? если форма имеет удобный размер, то зачем всегда торчать кнопочкам?
В ответ на: В идеале было бы круто, если бы измененный размер отдельных форм для отдельных страничек сохранялся бы в кукисах...
BodyID4all + user.css (если возможно для textarea задавать length/width) - там правишь. Не знаю насчет кукисов.
В ответ на: Кстати мышинными жестами ресайзить очень удобно.
Кому как - я вообще жесты не использую. Мне проще тянуть, чем фигуры вычерчивать profiT В ответ на: Кстати, удаления элементов страницы вообще кого-нибудь интересует? Platipus!
Блин! еще бы! можно его отдельно как-то замутить?
|
Небольшой оффтоп.
|
Kildor 05/21/05 01:58 PM |
|
Сделал скрипт для вставки цитаты и плавающей формы для my.opera.com/forums/
Имеются небольшие глюки. и главное, скрипт несовместим с expand
|
Re: Небольшой оффтоп.
|
Stinger 05/21/05 02:27 PM |
|
В ответ на: Ты бы хоть поставил его и посмотрел сколько там места он занимает.
Охотно верю. Но это не избавляет от проблем с другими скриптами, когда один будет налезать на другой.
В ответ на: зачем? если форма имеет удобный размер, то зачем всегда торчать кнопочкам?
Кнопочки могут появляться только при _наведении мышкой_ на форму ввода, как-бы "всплывать" рядом с формой(или по ее краям). Мешать в таком случае они не будут.
В ответ на: Кому как - я вообще жесты не использую. Мне проще тянуть, чем фигуры вычерчивать
[OFFTOPIC]А я себя часто ругаю за то, что долгое время игнорировал мышинные жесты и стал их использовать относительно недавно[/OFFTOPIC]
В ответ на: BodyID4all + user.css (если возможно для textarea задавать length/width) - там правишь. Не знаю насчет кукисов.
Задавать размеры textarea в CSS для каждого сайта, для каждой формы? Если добавлять вручную, то неудобно же.
Kildor
Спасибо. Будем отлавливать баги и глюки. Но лучше бы ты конечно для своего скрипта отдельную тему создал.
|
Re: Небольшой оффтоп.
|
aga 05/21/05 02:52 PM |
|
этот новый скрипт всё же получше.
- скрипт profiT`а не работает с отключённым использованием текущей страницы, новый скрипт легко вместе с этой отключённой опцией работает.
- изменение размеров происходит очень быстро и без тормозов.
как работает скрипт profiT`f: я протянул поле ввода с зажатой правой кнопкой, отпустил правую клавишу, размер поля изменился.
и как работает новый скрипт: как с обычным окном винды - т.е. я тяну за квадрат и размер поля ввода изменяется.
места новый срипт занимает мизерно мало. в стандарте в углу правом нижнем небольшой квадрат, примерно пикселей 10. при нажатии на него около поля ввода появляются ва небольших квадратика пикселей наверное по 5: красный и синий, первый квадрат из правого нижнего угла исчезает. при зацеплении левой кнопкой синего квадрата (курсор мыши приобретает соответствующий вид) и передмещении мыши размер поля ввода изменяется. при нажатии на красный квадрат размер поля ввода возвращается к дефолтному.
|
Re: Небольшой оффтоп.
|
aga 05/21/05 03:07 PM |
|
если в папке оперы оба скрипта изменения размеров, скрипт Prift`а по-крайней мере у меня не работает.
и ещё небольшая непонятка. не знаю, это только у меня так или у всех, но при использовании нового скрипта страница прокручивается небольшими рывками, подтормаживает. хотя это опять же может быть только у меня и только сейчас, а потом исправится.
пытался добавить вышеприведённых абзаца в конец предыдущего сообщения через редактирование, почему-то редактирование не было принято. т.е. я нажал кнопку исправления, эта страница обновилась, в конце предыдущего сообщения появилась надпись, что сообщение было отредакторовано агой (т.е. мною) число и время. но исправлений в виде первых двух абзацев не было видно. это что: глюки форума или что-то другое?
|
Re: Небольшой оффтоп.
|
Dimanish 06/26/05 01:06 PM |
|
Народ, скажите, пожалуйста, почему не работает готовый скрипт Resize Textarea 0.1, который я наглым образом вытянул из расширения resizeabletextarea v0.1a для FireFox? Вроде тотже javascript.... браузер должен влиять на работоспособностть скрипта? вот код: Code:
/*
Resize Textarea 0.1 Original coding by Raik Juergens Contact: borstel33@web.de
*/
var resizeTa = { loaded: null, TAlength: 0,
init: function (){ if (resizeTa.loaded) return; else{ resizeTa.loaded = true; var appcontent = document.getElementById("appcontent"); if(appcontent) appcontent.addEventListener("load", resizeTa.pageload, true); } },
pageload: function (aEvent){ resizeTa.doc = aEvent.originalTarget; resizeTa.TA = resizeTa.doc.getElementsByTagName('TEXTAREA'); resizeTa.TAlength = resizeTa.TA.length; if(resizeTa.TAlength == 0){ return; }else{ resizeTa.rootElem = resizeTa.doc.getElementsByTagName('HTML')[0]; var i = resizeTa.TAlength; while(i--){ resizeTa.newdiv('5' ,'1' ,'gripH_',i,'w' ); resizeTa.newdiv('1' ,'5' ,'gripV_',i,'n' ); resizeTa.newdiv('10','10','gripX_',i,'se'); } resizeTa.newdiv('0','0','showCursor','','w'); CursorDiv = resizeTa.doc.getElementById('showCursor'); CursorDiv.removeEventListener('mousedown', resizeTa.activate, true); CursorDiv.style.left = '0px'; CursorDiv.style.top = '0px'; resizeTa.posdivs(); window.addEventListener("resize",resizeTa.posdivs,true); } },
newdiv: function (w,h,id,nr,cu){ var grip = resizeTa.doc.createElement("div"); grip.setAttribute("ID", id+nr); grip.setAttribute("STYLE", "position:absolute;width:"+w+"px;height:"+h+"px;cursor:"+cu+"-resize"); grip.addEventListener('mousedown', resizeTa.activate, true); resizeTa.rootElem.appendChild(grip); },
getposition: function (i){ var curElem = resizeTa.TA[i]; var curX = curElem.offsetLeft; while (curElem.offsetParent) { curX += curElem.offsetParent.offsetLeft; curElem = curElem.offsetParent; } curElem = resizeTa.TA[i]; var curY = curElem.offsetTop; while (curElem.offsetParent) { curY += curElem.offsetParent.offsetTop; curElem = curElem.offsetParent; } return [curX,curY] },
posdivs: function (){ var k = resizeTa.TAlength; while(k--){ curPos = resizeTa.getposition(k); resizeTa.doc.getElementById('gripH_'+k).style.left = curPos[0]+resizeTa.TA[k].offsetWidth -3 + "px"; resizeTa.doc.getElementById('gripH_'+k).style.top = curPos[1] + "px"; resizeTa.doc.getElementById('gripH_'+k).style.height = resizeTa.TA[k].offsetHeight-8 + "px"; resizeTa.doc.getElementById('gripV_'+k).style.left = curPos[0] + "px"; resizeTa.doc.getElementById('gripV_'+k).style.top = curPos[1]+resizeTa.TA[k].offsetHeight-3 + "px"; resizeTa.doc.getElementById('gripV_'+k).style.width = resizeTa.TA[k].offsetWidth -8 + "px"; resizeTa.doc.getElementById('gripX_'+k).style.left = curPos[0]+resizeTa.TA[k].offsetWidth -8 + "px"; resizeTa.doc.getElementById('gripX_'+k).style.top = curPos[1]+resizeTa.TA[k].offsetHeight-8 + "px"; } },
activate: function (e){ resizeTa.doc = e.target.ownerDocument; resizeTa.TA = resizeTa.doc.getElementsByTagName('TEXTAREA'); CursorDiv = resizeTa.doc.getElementById('showCursor'); resizeTa.TAlength = resizeTa.TA.length; var curTargetId = e.target.getAttribute('ID').split("_"); curTarget = curTargetId[0]; curTA_Nr = parseInt(curTargetId[1]); resizeTa.doc.addEventListener('mouseup', resizeTa.deactivate, true); switch(curTarget){ case "gripH": resizeTa.doc.addEventListener('mousemove', resizeTa.resizeta_h, true); break; case "gripV": resizeTa.doc.addEventListener('mousemove', resizeTa.resizeta_v, true); break; case "gripX": resizeTa.doc.addEventListener('mousemove', resizeTa.resizeta_x, true); break; } CursorDiv.style.width = resizeTa.rootElem.offsetWidth + "px"; CursorDiv.style.height = resizeTa.rootElem.offsetHeight + "px"; CursorDiv.style.cursor = e.target.style.cursor; },
deactivate: function (){ resizeTa.doc.removeEventListener('mouseup', resizeTa.deactivate, true); switch(curTarget){ case "gripH": resizeTa.doc.removeEventListener('mousemove', resizeTa.resizeta_h, true); break; case "gripV": resizeTa.doc.removeEventListener('mousemove', resizeTa.resizeta_v, true); break; case "gripX": resizeTa.doc.removeEventListener('mousemove', resizeTa.resizeta_x, true); break; } CursorDiv.style.width = '0px'; CursorDiv.style.height = '0px'; resizeTa.posdivs(); },
resizeta_h: function (e){ curPos = resizeTa.getposition(curTA_Nr); resizeTa.TA[curTA_Nr].style.width = e.pageX - curPos[0] + "px"; },
resizeta_v: function (e){ curPos = resizeTa.getposition(curTA_Nr); resizeTa.TA[curTA_Nr].style.height = e.pageY - curPos[1] + "px"; },
resizeta_x: function (e){ curPos = resizeTa.getposition(curTA_Nr); resizeTa.TA[curTA_Nr].style.width = e.pageX - curPos[0] + 2 + "px"; resizeTa.TA[curTA_Nr].style.height = e.pageY - curPos[1] + 2 + "px"; } }
window.addEventListener("load",resizeTa.init,false); Сори за слишком большое сообщение.
|
Re: Небольшой оффтоп.
|
Dennis_HAWKS 06/26/05 04:39 PM |
|
Работает другой user.js Code:
// ==UserScript== // @name ExpandArea // @version 1.1 // @namespace http://stilleye.com/greasemonkey // @author David Schontzler // @description Adds button to make textareas expandable // @include * // @exclude gmail.google.com/* // @exclude *.jot.com/* // ==/UserScript==
(function() { function expandArea(elms) { var elms2 = []; for(var i = 0; i < elms.length; i++) { elms2.push(elms[i]); } for(var i = 0; i < elms2.length; i++) { applyArea(elms2[i]); }
function applyArea(elm) { var w = elm.offsetWidth, h = elm.offsetHeight; var pos = getAbsolutePosition(elm);
var overlay = document.createElement("div"); overlay.style.width = w + "px"; overlay.style.height = h + "px"; overlay.style.position = "absolute"; overlay.style.left = pos.x + "px"; overlay.style.top = pos.y + "px"; overlay.style.padding = "4px"; overlay.style.zIndex = "999"; overlay.className = "ExpandArea";
var size = document.createElement("div"); size.style.width = size.style.height = "8px"; size.style.background = "#33f"; size.style.position = "absolute"; size.style.right = "-8px"; size.style.bottom = "-8px"; size.style.cursor = "nw-resize"; size.style.MozBorderRadius = "4px"; size.setAttribute("title", "Drag blue box to size the text area"); var offX, offY; size.addEventListener("mousedown", function(e) { offX = e.offsetX + 8; offY = e.offsetY + 8; document.body.addEventListener("mousemove", doSize, false); document.body.addEventListener("mouseup", endSize, false); }, false); overlay.appendChild(size);
var reset = size.cloneNode(false); reset.style.background = "#c00"; reset.style.right = "1px"; reset.style.cursor = "pointer"; reset.setAttribute("title", "Click the red box to reset the size of the text area"); reset.addEventListener("click", function(e) { overlay.style.width = w + "px"; overlay.style.height = h + "px"; }, false); overlay.appendChild(reset);
var txt = document.createElement("textarea"); txt.value = elm.value; txt.style.width = "100%"; txt.style.height = "100%"; txt.onkeyup = function(e) { elm.value = this.value; } overlay.appendChild(txt);
document.body.appendChild(overlay); elm.style.visibility = "hidden";
function doSize(e) { var x = e.pageX - pos.x - offX; var y = e.pageY - pos.y - offY; if( x > 40 ) overlay.style.width = x + "px"; if( y > 40 ) overlay.style.height = y + "px"; }
function endSize(e) { document.body.removeEventListener("mousemove", doSize, false); document.body.removeEventListener("mouseup", endSize, false); } }
function getAbsolutePosition(elm) { var x = 0, y = 0; while( elm && elm != document.body ) { x += elm.offsetLeft; y += elm.offsetTop; elm = elm.offsetParent; } return { x: x, y: y }; } }
function setup() { if( !document.getElementsByTagName("textarea").length ) return;
var on = document.createTextNode("Expand Textarea"); var off = document.createTextNode(String.fromCharCode(160) + String.fromCharCode(171) + String.fromCharCode(160));
var html = " « "; var trigger = document.createElement("div"); trigger.appendChild( off ); with(trigger.style) { position = "fixed"; right = bottom = "0px"; color = "black"; background = "white"; border = "1px solid"; padding = "3px"; font = "10px sans-serif"; cursor = "pointer"; MozOpacity = ".4"; } document.body.appendChild(trigger); trigger.onmouseover = function() { this.replaceChild(on, off); } trigger.onmouseout = function() { this.replaceChild(off, on); } trigger.onclick = function() { expandArea(document.getElementsByTagName("textarea")); this.parentNode.removeChild(this); } }
window.addEventListener("load", setup, false); })();
|
Re: Небольшой оффтоп.
|
Dimanish 06/26/05 05:08 PM |
|
Ну да этот скрипт работает, только почему-то страница тормозить начинает... Да и не так красиво как в FF получается.
|
Re: Небольшой оффтоп.
|
Dennis_HAWKS 06/26/05 05:12 PM |
|
там еще и другие глюки есть. Особенно на форумах забывается тема и юзер.
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
AndreyI 06/27/05 08:45 PM |
|
В ответ на: Ура наконец-то появился работающий скрипт для увеличения textarea - дали здесь...
А у меня с этим скриптом что-то не то с окном ответа происходит: если я что-нибудь сначала напишу в окне, а потом через некоторое время исправлю или допишу, то отправляется в итоге то, что было написано сначала, а исправления и дополнения куда-то исчезают
|
Re: Предлагаю жесты для изменения размеров TEXTAREA
|
profiT 08/24/05 08:23 PM |
|
Тут некоторое затишье образовалось... Работаем, учимся. Ну, ладно, в общем я тут вам принёс обновлённую версию моего скрипта с жестами. В прикреплённом файле, ридми внутри.
Изменение там с прошлой версии только одно: теперь мой скрипт работает и с отключенной галкой "использовать текущую страницу" (вроде работает с версии 8.02tp2).
Как это делается: команда "Goto page" теперь поддерживает второй аргумент и если задать его как 1, то адрес будет запускаться на текущей странице вне зависимости от значения той галки.
|