Подписка на блог

В Телеграме помимо ссылок на заметки делюсь околодизайнерскими наблюдениями.

В Твиттере помимо ссылок на заметки пишу всякую чушь.

В Тумблере и Же-же есть автоматические трансляции. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

По РСС и Джейсон-фиду трансляции для автоматических читалок

Изменение размеров текстовых полей в Опере

И ещё вдогонку один хак для Оперы.

Нашёл вот тут букмарклетку для изменения размеров текстовых полей, дата поста — 25 августа 2006. Выходит, это было задолго до Сафари, просто мы всё проспали.

Я не люблю букмарклетки, я люблю нормальные действия по сочетаниям клавиш, поэтому себе к U, G и F я добавил R вот с таким действием:

Go to page, "javascript:TxtRsz={formEl:null,adEv:function(t,ev,fn){if(typeof document.addEventListener!='undefined'){t.addEventListener(ev,fn,false)}else{t.attachEvent('on'+ev,fn)}},rmEv:function(t,ev,fn){if(typeof document.removeEventListener!='undefined'){t.removeEventListener(ev,fn,false)}else{t.detachEvent('on'+ev,fn)}},init:function(){var textareas=document.getElementsByTagName('textarea');for(var i=0;i<textareas.length;i++){textareas[i].style.cursor='se-resize'}var inputs=document.getElementsByTagName('input');for(var i=0;i<inputs.length;i++){if(inputs[i].type=='text'){inputs[i].style.cursor='e-resize'}}TxtRsz.adEv(document,'mousedown',TxtRsz.initResize)},initResize:function(event){if(typeof event=='undefined'){event=window.event}var target=event.target||event.srcElement;if(target.nodeName.toLowerCase()=='textarea'||(target.nodeName.toLowerCase()=='input'&&target.type=='text')){TxtRsz.formEl=target;TxtRsz.formEl.startWidth=TxtRsz.formEl.clientWidth;TxtRsz.formEl.startHeight=TxtRsz.formEl.clientHeight;TxtRsz.formEl.startX=event.clientX;TxtRsz.formEl.startY=event.clientY;TxtRsz.adEv(document,'mousemove',TxtRsz.resize);TxtRsz.adEv(document,'mouseup',TxtRsz.stopResize);try{event.preventDefault()}catch(e){}}},resize:function(event){if(typeof event=='undefined'){event=window.event}try{TxtRsz.formEl.style.width=event.clientX-TxtRsz.formEl.startX+TxtRsz.formEl.startWidth+'px'}catch(e){}if(TxtRsz.formEl.nodeName.toLowerCase()=='textarea'){TxtRsz.formEl.style.height=event.clientY-TxtRsz.formEl.startY+TxtRsz.formEl.startHeight+'px'}},stopResize:function(event){TxtRsz.rmEv(document,'mousedown',TxtRsz.initResize);TxtRsz.rmEv(document,'mousemove',TxtRsz.resize);var textareas=document.getElementsByTagName('textarea');for(var i=0;i<textareas.length;i++){textareas[i].style.cursor='text'}var inputs=document.getElementsByTagName('input');for(var i=0;i<inputs.length;i++){if(inputs[i].type=='text'){inputs[i].style.cursor='text'}}}};TxtRsz.init();"


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

Работает так: нажал R — все текстовые поля стали ресайзабельными, ресайзнул. Надо ещё раз ресайзнуть — ещё раз нажал R, ресайзнул. Естественно, если вы вместо R повесили это на Shift+Ctrl+F12, то вам надо жать именно это.

Конечно, необходимость чего-то нажимать перед ресайзом — это не айс не Сафари. Но может быть найдутся неленивые ребята, которые сделают из этого правильный UserJS, который будет добавлять такую фичу всем контролам насовсем? Это чуть сложнее, чем просто навешивание этого скрипта на onload странице, потому, что в момент после нажатия R с полем ничего кроме ресайза делать нельзя (например, писать в него). Так что придётся поработать.

Впрочем, меня и так устраивает вполне.
Подписаться на блог
Поделиться
Отправить
2007   Опера
5 комментариев
Pure_BY
Возможно, глупый вопрос… Но как именно вы повесели себе это на keyboard shortcut?!
Илья Бирман
Preferences, Advanced, Shortcuts, Keyboard shortcuts.
Pure_BY
Я так и пробовал, и у меня даже настроено несколько своих шорткатов, только если я в качестве действия копирую текст из вот той формы, то при нажатии на соответствующее сочитание клавиш у меня не происходит ничего.

Пробовал букмарклетом — работает.
Илья Бирман
А, дак там e2 закосячил исходник весь ;-) Щас исправить попробую.

Update: Попробуйте ещё раз?
Pure_BY
Замечательно! Работает! :) Огромное спасибо (интересно, уже в который раз ;-) !

Знаете, я сегодня, после прочтения вот этого топика на Хабрахабре, заинсталлировал Сафари — посмотреть, всё ли там так сладко работает. И вот я пришёл в полный восторг именно от этой фичи — textform ресайзинг. И сидел и грустил, что такой вкусности в Опере нет. И в тот же день вы вот эту заметку постите!! Кайф!

Кстати, что самого Сафари касается, то выглядит это всё конечно чрезмерно сладко и вкусно, но пользоваться им как браузером через чур неудобно. Нет нормальной поддержки табов, но что бесит больше всего — это то, что когда тыкаешь мышкой в адресную строку, адрес не выделяется полностью (как в Опере).
Andrew
когда тыкаешь мышкой в адресную строку, адрес не выделяется полностью (как в Опере)
Не как в Опере, а как в Виндоус.
Kildor
есть такой userJS
при наведении мышою на поле в углу добавляется обыкновенный ресайзер.
Популярное