Как стать автором
Обновить

Комментарии 95

Спасибо за улучшение!..
Очень удобно. Обновлюсь…
Кнопки © ® « » ±, а также ™ € ≠ × ° § ≈ и прочие не нужны.
Нужна правильная раскладка, которая работает во всех приложениях, а не на одном сайте.
а мне хочется самомурасставлять кавычки типа «начало текста «середина» конец текста» а не смотреть как хабр делает «начало текста» середина «конец текста»
Вы вообще о чем? Кого вам расставляет хабр? Уверены, что по ссылке ходили?
хабр меняет обычные двойные кавычки на типографские, и не всегда так как я этого ожидаю, да, с кнопок неудобно вводить кавычки, но я не так часто ими пользуюсь, но пользуюсь, и не хочу только из-за этих кавычек такую раскладку, проще раз в день ткнуть на кнопочку
Что-то мне кажется, ваше «неожидание» несколько преувеличенно. Знак дюйма (а не «обычная двойная кавычка», как вы её назвали) заменяется на открывающую кавычку, если перед ним стоит пробел и на закрывающую, если после. Знак дюйма не меняется на кавычку, если стоит после цифр, т.е. используется по назначению: 19"
=) я не знал, спаибо, а кнопочки всеравно люди заменят все под себя
Эм, ну кагбэ, если я не ошибаюсь, то это не знак дюйма, так как для обозначения дюймов (и секунд в градусной мере) все-таки существует отдельный символ (\u2033), как например: 19″ (сравните с английскими кавычками “” и символом, который у всех нас на клавиатуре, — ". В данном шрифте никакой разницы, но в окне набора комментария у меня они все выглядят по-разному).
там кстати еще будет нюанс с кириллицей, получится на одну клавишу 3 символа, мне кажется это будет неудобно обыным пользователям типа меня
Я опять не понял. Какой нюанс?
Про три символа: дак до четырех, на самом деле. Вам кажется удобнее вводить символы текста с помощью кнопок на экране?
Мне, например, нахрен не сдалась типографская раскладка. Искать на ней символы я буду дольше, чем тыкать в кнопочки на форме.
Учить специально кнопки этой раскладки я, конечно, не буду, а сами они не выучатся — слишком редко нужны(мне).
+ еще наклейки где-то взять надо(на лазать же каждый раз на сайт с описанием и смотреть где что находится).
Вам «нахрен не сдалась» типографская раскладка, тем не менее, вы собираетесь тыкать в кнопочки на экране. Я вполне допускаю, что есть огромный пласт людей, которым «нахрен не сдались» кавычки (так же как другим, знаки припинания, например). Но я так же не понимаю, зачем этим людям кнопочки, в которые они будут тыкать.
Спасибо удобная вещь!
А сразу js-файлик нельзя было вставить? )
Я скопировал код (делал много раз, все было ок), но кнопок не появилось…
вставил прямую ссылку
А как бы мне вместо "±" смайл добавить? ":)"
обновил
Почему не указано для каких браузеров предназначен скрипт? Судя по предыдущей версии — то только для Оперы. Я прав?
я тэг написал, да, это только для оперы предназначен, другие браузеры пока в todo, я не исключаю создания плагинов к остальным в будуйщем
Только для Оперы? Можно легко Экстеншн для Хрома сделать.
Собственно, сейчас этим и займусь, если автор не против.
Скрипт оказался слабо совместим с Хромом =) Убрал if для проверки локации, а тулбар все равно не отрисовывается. Проще с нуля сделать наверное, чем искать в чем проблема.
поидее нужно запустить его ручками: Toolbar.draw()
у меня он автоматом запускается при загрузке странички
шапку надо чуть шире ) а то эти пара пикселей режут глаза )
при наведении на кнопки вылезает подсказка — undefined
подсказку поправлю, а вот шапку пошире увы, все берется из стандартных хабровских стилей, получается либо больше, либо на пару пикселей меньше, это в todo…
Как поправить в «ответе» пока не нашел, но для основного комментария можно по простому заменить 259 строчку на

panel.style.width = '100%';
textarea.style.width = '100%';


Имхо, 95% ширины — не принципиально, и в опере ничему не противоречит, а аккуратность повышается)
Вообще, я сейчас читаю доки к userJs, думаю можно найти доступ к calculated width и все можно будет поправить одной строчкой)
Хотя нет, вру, принципиально, сейчас обратил внимание, что скроллбар немного обрезается.
ширину нужно выставлять только в процентах, потому как это поле вставляется в разные места, которые то шире, то уже, и может все вообще некрасиво выглядеть, оптимальные варианты 95% и 96% но визуально мне больеш нравится «недобор» чем «перебор»
Вот рабочий вариант.

textarea.parentNode.style.paddingRight = '4px'
panel.style.width = 'auto';
textarea.style.width = '100%';
panel.style.marginRight = '-4px';


Вставлять вместо

panel.style.width = '95%';
Еще можно добавить аккуратную рамочку:

panel.style.border = '1px solid #c8d2df';
panel.style.borderBottom = 'none';
благодарю, действительно приятней для глаза :)
Спасибо! Только непонятно, зачем специально сделали «кавычки» отдельно, хабрапарсер все равно подменяет автоматом.
если честно, я не знаю, просто добавил несколько полезных кнопочек, я вообще туда не знал что втулить, но такого типа кнокни нужны, на случай если пользователь захочет добавить свою нестандартную кнопочку… после некоторых каментов я начинаю думать что возможно смайлы там были бы более к месту
«Наконец-то заработало» — подумал Boomburum и плюсанул пост + карму ;)
Вы добавили себе кнопку /me?
А нельзя воткнуть проверку на многоуровневость комментов, чтобы у одиночных комментариев не отрисовывалась надпись «Свернуть»?
И надо наверно определиться со строчными/заглавными буквами в ответить и свернуть. А заодно чуток побольше их разнести в стороны.
Опередил)
можно, но там будет на кажды камент выполняться ряд лишних действий, и «возможно» он будет подтупливать при большом количестве каментов, я пока не увлекался, в следующей версии обязательно будет проверка
регистр букв и расстояние поменяю
Только одно. Проверить, что

replyElements[q].parentNode.parentNode.childNodes[7]!=null

На этом топике не тормозит)
Проблема только в том, что при добавлении ответа на безответный комментарий, в него не добавляется ссылка. Но не думаю, что кому-то захочется тут же свернуть свой ответ)
=) как бэ вставят создатели хабра один пробельчик и все ;) я буду делать через гетэлемент, на этом топике не тормозит так как тут 30 каментов, есть другие по 300-500, а работа моего скрипта может:
1 — повесить бразер
2 — хабр может не откликаться на клик по ссылке ответить
3 — не сможете ставить оценку
4 — итд работающее на JS
а может и не, так что лучше сперва протестить на большом дереве, и потом уже внедрять :) не хочу делать поспешных нововведений
=) как бэ поменяют создатели хабра один айдишник и все)
А как вы будете через гетЭлемент делать? Чекать все чайлдноды у li с каментом на tagName==ul? Нагрузка, конечно, возрастет.
Мне все-таки видится наиболее правильным вынести сворачивалку в отдельный плагин и уповать на стабильность хабровских шаблонов в угоду скорости)
В любом случае, сворачивалка гораздо менее критичный функционал, а пользователи, если увидят, что она не работает, посмотрят, не появилась ли новая версия. А вообще, если по-крутому, можно раз в день проверять последнюю версию ajax-запросом и выдавать запрос на обновление, если что. Хотя, конечно, нужно сделать отдельную версию без автообновлений, и вообще как следует это продумать.

Кстати, а кто-нибудь вообще думал раньше об проверки наличия обновлений в userJs? По-моему в таких контекстно-зависимых штуках было бы мегакруто (например, всякие скачивальщики музыки из контакта периодически ломаются и приходится самому на сайт лезть)
я хотел через getElementsByTagName но там поддетей возвращает, так что пока циклом обойдусь… кстати чаще меняют структуру чем айдишники и классы :)

мне не нравится концепция userJS, мне лень их запускать :( плагины удобней, они сами выполняются :)
эмм. Ваш плагин написан как раз по технологии userJS. И выполняется сам, при загрузке страницы. Разве нет?)
в опере 2 типа userJS первый цепляется на тублар, как во всех других браузерах, а второй грузится автоматом, вот первый мне и не нравится, те что кроссбраузерные
Те, которые на тулбар — это либо button (фича оперы), либо bookmarklet (добавляется в закладки), а те, что грузятся автоматом — это как раз userJS, насколько я понимаю. И они тоже чуть-чуть кроссбраузерные, ибо загружаются в файерфокс с гризманки. Хотя работают, конечно, слегка по-разному)
пока будет с циклом, если будет тупить, буду думать, вроде бы пока нормально
воткнул
Еще неплохо было бы убрать ссылку «свернуть» для комментариев, не имеющих ответов.
*да и вообще, имхо было бы логичнее разнести редактор и сворачивалку на два плагина
У меня вываливается ошибка:
Javascript
User JS compilation
Syntax error C:\Program Files\Opera\profile\userjs\habrButtons.js: line 135 of User JS script :
Expected token: ')'
=\"red\">"") !== -1) ? lc.substr(lc.lastIndexOf("<font color=\"red\">"")) : null;
-------------------------------------------------^
залейте скрипт по прямой ссылке, я глупость делал что выложил его на сайте исходников, там преобразовали   в " (\«red\»>"") и получилась вот такая двойная ковычка, в ней и бок )

прямая ссылка
я ее постепенно обновляю, так что иногда заходите если все будет хорошо, мож обновиться захотите :)
ну еще шапку добавите, чтоб по канонам )

// ==Userscript==
// @name xxx
// @version xxx
// @date xxxx-xx-xx
// @author xxx
// @download xxx
// @include xxx
автор шапку добавил, но самый главный пункт include — забыл. Да и переименновать в *.user.js как уже ниже сказано
и первую строчку переименовал, хотя не надо ), так и должно быть "// ==Userscript=="
не переименовал, так как есть небольшие расхожденя между браузерами, и сразу он не заработает в других, если следующая версия будет кроссбраузерная, обязательно переименую
в user.js переименовывать не надо ) в опере все равно как скрипт обзывается ) главное чтобы он лежал в папке со скриптами. А вот шапочка верная желательна(но не обязательна) )
Переименуйте на *.user.js что бы Chrome и FF сами ставили крипт
Он все равно с Хромом пока несовместим.
Тогда я думаю стоит написать для какого браузера скрипт, и почему нельзя сделать кроссплатформенный?
я написал для какого браузера скрипт, предпоследняя строчка в посте, кросплатформенный он и сейчас, а кросбраузерным сделать его пока что только в todo, разберусь с багами что люди присылают, и потом подумаю
Чтобы Хром и Лиса стали их понимали надо добавить полей в заголовке. возможно даже сам скрипт даже допиливать не придётся
Хром и ФФ может и подхватят автоматом, за то Опера перестанет его понимать. Какой-то глюк присутствует при подхватывании скриптов с .user в имени файла.
{
	type: 'image',
	src: 'http://www.picamatic.com/show/2009/11/29/09/36/6125202_20x20.png',
	title: 'Quote',
	text: '<blockquote>?</blockquote>',
},
я специально не вставлял кнопок, получающих изображения из других сайтов, все берется только из хабра, остальные кнпочки на совести пользователей, измененя не запрещаются, а даже поощряются
Ну я ж Вас и не прошу добавлять это в «официальную» версию. Выложил специально для других — вдруг кому пригодится =) Картинку честно спёр с блоггера и перекрасил в хаброцвет ;)
Честное спасибо!
Кстати, если автор против использования картинок для кнопочек с других доменов, почему бы не использовать base64? )
Подскажите, что я делаю не так?

1. Сохранил C:/userJs/habr.user.js в UTF-8
2. Прописал C:/userJs в опциях оперы. Включил консоль при ошибках.
3. При перезагрузке страницы никакого тулбара и ошибки:
это не ошибки, это замечания хабра а не тулбара, они обычно не влияют на работу =)
сходу сказать в чем ошибка затрудняюсь, может это не весь список ошибок, может есть другие, которые прояснят ситуацию?
консоль отключи и попробуй без нее, тулбара нет? Файл сам нормально сохранён?
Так я ж чего и включил консольку — потому что тулбара не было.
Что значит нормально? Ctrl+C+V в Notepad++, Convert to UTF-8 without BOM, Save. Символы при этой процедуре не пострадали.
ошибок в консоли точно не было? это те что с красным крестиком )
Нет. Только ворнинги, которые на скрине.
И Опера ж зараза никаких комментариев к ворнингам не пишет. Где? Почему?
бр )) проблема с именем ) habr.user.js не корректное ) habruser.js будет корректно. Видимо опера немного некорректно определяет расширение, никому не лень багрепорт сделать?
Это капец. Воистину спасибо за наводку. Я был свято уверен, что должно работать. Тем более учитывая то, что я раньше уже подключал юзерскрипты к более старой версии оперы с именами файлов .user.js
тогда с вас багрепрот ) bugs.opera.com
Done. Только я через визард зарепортил. Некогда регистрироваться.
И кстати вся магия только в .user.
Скрипт с именем habr.comment.js подхватился.
ахренеть, спасибо, будем знать :)
будем тогда ждать ответа на ваш репорт, может резервируется где это имя…
Возникла идея прикрутить типограф от Spearance. Но там есть несколько нюансов для рассмотрения… Есть мысль, что должен получиться следующий маневр:
— у себя на сайте находится прокси, который может общаться с веб-сервисом типографа посредством POST и формировать ответ для тулбара.
— тулбар делает JSONP запрос на прокси и получает оттипографированный текст.

Тут только несколько вопросов:
1. Разрешено ли будет userJS-скрипту произвести JSONP запрос?
2. Насколько это будет тормозить?
3. Не накроет ли проксю или веб-сервис типографа хабраэффектом? :)

Второй и третий вопросы риторические и больше относятся к проверяемым опытным путем. А вот на первый вопрос не знает ли кто ответ?
=) я просто хотел сделать кнопочки для удобства написания каментов, и сворачивание ненужных веток каментов, типограф более нужный при создании топиков, но для этих целей есть хабра-редактор, хотя он и подглючивает с подсветкой кода, еще проблемма в кросбраузерном аяксе, в принципе на данный момент я знаю только один способ — вставка скрипта в тело документа, но проблемма в том что результат должен быть валиндым JS кодом, иначе возникает ошибка
еще проблемма в кросбраузерном аяксе

Как-то так:
/* Создание нового объекта XMLHttpRequest для общения с Web-сервером */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTT");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTT");
  } catch (e2) {
    xmlHttp = false;
  }
}
@end @*/


if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}
объявление переменной раскрашено как комент, бажек?
Колорер косит что-то
уже не косит :)
fixed, updated. буду благодарен за очередные багрепоты =)
да, похоже баг, будем разбираться =)
дело в том что обьекту XMLhttpRequest запрещается делать кросдоменные запросы, поэтому не все так просто
ну виджетам разрешено к примеру, нужно проверять опытный путём
То ли скачивается криво, то ли просто не работает в релизе Оперы 10.50
в скрипте в самом низу вместо
document.attachEvent('onload', Toolbar.draw);
ставим
document.addEventListener('DOMContentLoaded', Toolbar.draw)
должно все заработать
Не работает :( Но могли бы Вы залить полный скрипт на userscripts.org? У меня все равно ощущение, что скрипт скачивается неправильно
я позже напишу, надо будет протестить его в опере новой и выложу ссылку обновленную, ща я сервак переустановил, его на серваке нету
Ох, отлично! Работает!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории