myoperam Предлагаю жесты для изменения размеров TEXTAREA
ВНИМАНИЕ! ОСТЕРЕГАЙТЕСЬ МОШЕННИКОВ!
Помните, что все браузеры Opera АБСОЛЮТНО БЕСПЛАТНЫ.
Загружайте новые версии ТОЛЬКО С ОФИЦИАЛЬНОГО САЙТА или с ресурсов, которым ДОВЕРЯЕТЕ!


Предыдущее | Следующее | Архив форума | operaman.ru | Поиск
Предлагаю жесты для изменения размеров 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 = "&nbsp;&laquo;&nbsp;";
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, то адрес будет запускаться на текущей странице вне зависимости от значения той галки.


operaman.ru - Home


Rambler's Top100