Из адресной строки всё копируется нормально: https://ru.wikipedia.org/wiki/Браузер. А вот если на самой страничке кликнуть на любую ссылку правой кнопкой и выбрать "Копировать ссылку", то получается сплошное безобразие: https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F)

Параметр network.standard-url.escape-utf8 давно уже переведён в значение false и он влияет именно на копирование ссылок из адресной строки. На копирование ссылок из текста по правой кнопке он влияния не оказывает. Пробовал заодно и network.standard-url.encode-utf8 тоже перевести в false, но это ни на что не повлияло. Есть еще какие идеи?

Версия браузера последняя (45.0.1).

Custom Buttons и в инициализацию

Выделить код

Код:

document.getElementById('context-copylink').setAttribute('oncommand', 'gClipboard.write(decodeURIComponent(gContextMenu.getLinkURL()));');

turbot
Ух ты. Спасибо огромное, вещь.:beer:

turbot
И куда я должен вставить этот код? Custom Buttons поставил, но по правой кнопке нет никаких новых пунктов - только обычное "Копировать ссылку".

P.S. Попахивает каким-то розыгрышем от разработчиков. Браузер 2016 года, не умеющий нормально копировать ссылки - это как-то... Ну не знаю даже...

Avatar-Lion
Зайдите в about:addons, на вкаладку CB, жмякните там "добавить кнопку", в открывшемся редакторе перейдите на вкладку "инициализация", вставьте туда код. Опционально - назовите кнопку и задайте иконку. Сохраните. Зайдите в режим кастомизации и вытащите созданную кнопку на панель. Обратите внимание, что кнопки расположенные в меню "гамбургера" не инициализируются после рестарта/открытия нового окна до первого открытия этого меню. Поэтому, сли хотите, чтоб кнопка не мозолила глаза, то скройте ее стилем в userChrome.css/Stylish'е:

Выделить код

Код:

toolbarbutton[label='тут название, которое вы дали кнопке, с соблюдением РеГиСтРа']{display:none!important}

Либо вытащите на панель меню, ту что по нажатию alt появляется.
Либо код можно положить в другую кнопку, имеющую полезные функции по нажатию. Посетите раздел Сustom Buttons, там много полезных.

08-04-2016 20:28:52

Avatar-Lion пишет

P.S. Попахивает каким-то розыгрышем от разработчиков. Браузер 2016 года, не умеющий нормально копировать ссылки - это как-то... Ну не знаю даже...

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

turbot
А, вот оно как... Да, сделал. Теперь все копируется нормально. Кнопку отправил в бутерброд - ссылки с кириллицей редко копирую, в случае чего открыть \ закрыть меню с новой кнопкой несложно.

P.S. А нельзя все-таки на уровне браузера отключить эту "угоду безопасности"? Я готов пожертвовать своей безопасностью, если что, в угоду комфортности.

Avatar-Lion пишет

А нельзя все-таки на уровне браузера отключить

Если только самому в исходниках ковыряться. :)

turbot пишет

С помощью юникода в ссылках можно забавные вещи проворачивать. Фишинг, все дела.

Т.е. была бы оптимальной возможность задавать адреса для определенных сайтов.., но с помощью например скрипта это не реализовать, если правильно понимаю?

http://is.gd/85V3cW =  https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F)        https://addons.mozilla.org/en-US/firefox/addon/copy-shorturl/?src=userprofile

oleg953
Неа.., https://ru.wikipedia.org/wiki/Браузер_(значения)

turbot
А из адресной строки такое копирование  можно организовать?

voqabuhe
Дык, в первом же посте: network.standard-url.escape-utf8;false

08-04-2016 23:35:27
Ну или

Выделить код

Код:

addEventListener('popupshowing', function(e) {
  var mitem = e.originalTarget.getElementsByAttribute('accesskey', 'c')[0];
  mitem.removeAttribute('cmd');
  mitem.setAttribute('oncommand', 'gClipboard.write(decodeURIComponent(gURLBar.value));');
}, false, document.getElementById("urlbar"));

(Для комильфо. Так как, если открыть ссылку вида https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F), а не https://ru.wikipedia.org/wiki/Браузер_(значения),то та и скопируется.Не зависимо от параметра.)

08-04-2016 23:44:49
Ух, так ведь вся ссылка скопируется, не выйдет скопировать часть. Буду подумать.

turbot
Да у меня давно установлено network.standard-url.escape-utf8;false, но что-то по-моему она перестала работать.  Вот например в адресной строке https://ru.wikipedia.org/wiki/Заглавная_страница, раньше так и копировалась, что выделил, то и копировало, а сейчас  всю эту фигню тянет.

voqabuhe пишет

Да у меня давно установлено network.standard-url.escape-utf8;false, но что-то по-моему она перестала работать.  Вот например в адресной строке https://ru.wikipedia.org/wiki/Заглавная_страница, раньше так и копировалась, что выделил, то и копировало, а сейчас  всю эту фигню тянет.

turbot пишет

если открыть ссылку вида https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F), а не https://ru.wikipedia.org/wiki/Браузер_(значения),то та и скопируется.Не зависимо от параметра.


turbot пишет

Ух, так ведь вся ссылка скопируется, не выйдет скопировать часть. Буду подумать.

Выделить код

Код:

addEventListener('popupshowing', function(e) {
  var mitem = e.originalTarget.getElementsByAttribute('accesskey', 'c')[0];
  mitem.addEventListener('click', (e)=> { setTimeout(()=> gClipboard.write(decodeURIComponent(readFromClipboard())),50) });
}, false, document.getElementById("urlbar"));

Хмм... :/

09-04-2016 00:04:50
В смысле, работает, просто некрасиво как-то. :)

09-04-2016 00:10:20
А, и только по клику мышкой (ну и ctrl+c, как надо, и так копирует). При копировании через горячую клавишу (accesskey) "c", выйдет по прежнему - не знаю как перехватить.

turbot
Проверил спецом в Developer, открыл из буфера https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 ,  в адресной показывает https://ru.wikipedia.org/wiki/Заглавная_страница,   так и копирует через ПКМ с настройкой network.standard-url.escape-utf8;false

09-04-2016 00:40:34
Не что-то в [nightly] опять начудили.

voqabuhe пишет

Не что-то в [nightly] опять начудили.

А, ну может. Я как-то особо не обращал внимания раньше.

turbot пишет

не знаю как перехватить

Как насчёт поискать глюков в таком коде?

скрытый текст

Выделить код

Код:

(hbox => {
    var copy = () => gClipboard.write(decodeURIComponent(gURLBar._getSelectedValueForClipboard()));
    addEventListener("command", e => e.originalTarget.getAttribute("cmd") == "cmd_copy" && !e.stopPropagation() && copy(), true, hbox);
    //addEventListener("keypress", e => e.ctrlKey && e.code == "KeyC" && !e.shiftKey && !e.altKey && !e.preventDefault() && copy(), true, hbox);
})(gURLBar.inputField.parentNode);

Dumby пишет

Как насчёт поискать глюков в таком коде?

В смысле, тыкательным методом? :) Тогда пожалуйста: у меня не работает. Если выделена вся адресная строка. Только с частью адреса работает.

turbot пишет

В смысле, тыкательным методом? :) Тогда пожалуйста: у меня не работает. Если выделена вся адресная строка. Только с частью адреса работает.

Да-да, именно им. Спасибо за тестирование.
Загрузил свежую Nightly, запилил чистый профиль,
поставил CB 0.0.5.8.9, но всё равно как-то так. :(

Dumby
Ага, прошу прощения. Причина в Advanced Locationbar была.

turbot пишет

Причина в Advanced Locationbar была.

Аналогично.  Блин,  к Advanced Locationbar вроде уже  привык, чем его теперь заменить? А подружить их никак нельзя? ;)

voqabuhe
Я написал VEG'у, может он поправит.

turbot пишет

Я написал VEG'у, может он поправит.

Спасибо, будем ждать.

10-04-2016 00:35:12
Dumby
А в твоей кнопке Копировать информацию о вкладках можно сделать такое же копирование ссылок?

Ребят, извините, сижу на бетах, и исправляю проблемы только для бет и релизов. Сам всегда пользуюсь фишкой с копированием адресов «как есть», без escape кириллицы, так что будет точно исправлено, но позднее.
Pure URL в ночнушках уже много раз «ломали», а потом «чинили». Может и тут те изменения, что привели к несовместимости, вскоре откатят :)

Когда в бетах запретят использовать неподписанные расширения (я ещё кое что для себя писал и всё ленюсь опубликовать), то возможно перейду на Developer Edition и буду уже на неё равняться.

turbot пишет

Причина в Advanced Locationbar была.

Да, есть такое. Может так прокатит. :/

скрытый текст

Выделить код

Код:

((input, func, menuitem = func(input.parentNode) || func(input)) => {
    var copy = () => gClipboard.write(decodeURIComponent(gURLBar._getSelectedValueForClipboard()));
    menuitem && addEventListener("command", e => e.stopPropagation() || copy(), true, menuitem);
    //addEventListener("keypress", e => e.ctrlKey && e.code == "KeyC" && !e.shiftKey && !e.altKey && !e.preventDefault() && copy(), true, input);
})(gURLBar.inputField, node => node && document.getAnonymousElementByAttribute(node.parentNode, "cmd", "cmd_copy"));

Dumby пишет

Может так прокатит. :/

Спасибо.

Dumby
Ага, спасибо, работает. :beer:

VEG
Дык я не про баг ночнушки говорил, а про конфликт с предыдущим кодом Dumby. Конфликт и на релизной имеет место быть. Другое дело, что для нее он не нужен, ибо и без него копирует как требуется. :)

Господа, а с ссылками с символом ' в названии все по-прежнему? Начиная, по-моему с 40 версии, ссылки в другие программы передаются только до  символа ' . По крайней мере, [firefox] ESR 38, копирует еще правильно, кодируя этот символ.

Этим, в принципе, все браузеры больны, но раньше [firefox] не болел.

turbot пишет

Причина в Advanced Locationbar была.

Извиняюсь, что так поздно, но похоже что Advanced Locationbar не при чём! Изменилось поведение самого браузера. Почитать можно, например, тут: https://bugzilla.mozilla.org/show_bug.cgi?id=1271088

Технически эту проблему при копировании из адресной строки я могу решить из Advanced Locationbar. Но при копировании ссылок со страниц кодирование всё равно останется. Может быть, какое-нибудь решение по этой проблеме уже было найдено, и в Advanced Locationbar не нужно ничего мудрить?

Насколько я могу судить, раньше настройка network.standard-url.escape-utf8 работала на более низком уровне, и одним образом решала задачу как для копирования из адресной строки, так и из ссылок на странице. То есть обработки настройки network.standard-url.escape-utf8 как не было в коде адресной строки, так и нет. Может быть ещё какая-то новая настройка появилась, возвращающая привычное поведение?

Нда уж, столько времени прошло с предыдущего релиза, пришлось заново с нуля разбираться :)
Обновление тут: https://addons.mozilla.org/en-US/firefo … /versions/ (на рассмотрении у Mozilla, но всё равно можно поставить, если отключить проверку подписи).
Тестировал на Firefox 51, но должно работать и на других ближайших версиях.

Поскольку Omnibar сломался, есть мысль сделать такую же перключалку текущего поисковика, как в этом расширении, но и так уже день потратил на починку некоторых мелочей. Так что может быть в будущем. Или может кто-нибудь другой напишет отдельное такое расширение. Очень уж удобная штука была.

VEG
https://addons.mozilla.org/firefox/file … r.xml#L450
?
Насколько я помню, пробелы вывалит пробелами, и такие ссылки ни одно приложение не распознает, нужна еще замена " " -> "%20".

Infocatcher
Действительно. Почему-то думал, что оно не станет пробелы декодировать. Думал заменять на + (по стандарту это тоже пробел), но потом вспомнил, что некоторые глупые сайты не понимают + (пока что только vk.com, но наверное ещё есть). Сейчас сделаю чтобы пробелы на %20 заменялись. Спасибо за замечание.

VEG пишет

Думал заменять на + (по стандарту это тоже пробел)

Мне кажется, %20 безопаснее, потому как если изначально была поддержка +, то будет что-то типа
https://www.google.ru/search?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA+%D1%81+%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8
-> https://www.google.ru/search?q=поиск+с+пробелами

Хм, наверное всё же следует расширить список символов, которые должны оставаться в закодированном виде. Как минимум — добавить ещё кавычки " и '. Также не нужно запускать код декодирования если input сейчас в режиме редактирования (потому что получится двойное декодирование). Ещё нашёл баг с F6. Уже одобрили, но нужно ещё одно обновление.

Кстати, вчера немного упоролся и всё же починил полезную функциональность Omnibar (иконку выбора поисковика по умолчанию с выпадашкой) и вырезал почти всё лишнее, что дублировало функциональность современной лисы. Получилось строк 300 кода. Вот сейчас думаю, отдельным расширением оставить, или встроить в Advanced Locationbar. С одной стороны хорошо бы интегрировать — функциональность связана как раз с расширением возможностей адресной строки, плюс это обновление получит сразу несколько тысяч пользователей. С другой стороны — эта функция к непосредственно адресу сайта отношения не имеет. Правда, если оно будет в виде отдельного расширения, то большинство людей так и не узнает о расширении, если его не пиарить =)

VEG пишет

встроить в Advanced Locationbar.

А с точки зрения потребления ресурсов что лучше : 2 маленьких дополнения или одно, где всё вместе ? С одним наверняка старт браузера ускорится, с двумя — потребление памяти вырастет ?
Если ненамного — лучше совместить.
А если и нет

VEG пишет

большинство людей так и не узнает о расширении, если его не пиарить

Ссылка в справке (настройках) с описанием функционала нового дополнения, как например сделано в Preferences Monitor с его eCleaner, вполне поможет узнать о нём заинтересованным слоям населения. :)

Ещё одно обновление: https://addons.mozilla.org/en-US/firefox/addon/advanced-locationbar/versions/
Добавил кодирование символов (, ) и ". Как показывает практика, на этих символах разные сайты и программы чаще всего спотыкаются.
Также ещё улучшил режим линкификации, когда ведём от иконки — сейчас можно вести более небрежно, поскольку вверх и вниз на 15 пикселей от адресной строки курсор может уходить, и этот режим не будет выключаться. Если же его в этой внешней резервной области задержать на 3 секунды, то он выключится.

Omnibar пока что не буду выкладывать, его ещё немного надо причесать (убрать настройки, для которых уже нет кода). Плюс я хочу ещё попробовать вариант размещения иконки поисковика не справа, а слева, там где во время набора запроса сейчас отображается неактивная серая иконка i в кружочке. По идее там можно будет отображать и иконку того поисковика, ключевое слово которого ввёл пользователь. И этой же иконкой же менять поисковик по умолчанию. То есть, например, у яндекса ключевое слово «y», а по умолчанию стоит Google. Пользователь начинает набирать запрос — сразу иконка гугла отображается. Но как только система видит, что введено ключевое слово другого поисковика, иконка должна это отразить. Этой же иконкой можно отображать и то, когда введён не запрос, а валидный адрес сайта, и при нажатии на enter будет произведён прямой переход на адрес, а не в поисковик. Но это пока что на уровне идеи. Сейчас буду пользоваться тем Omnibar что сделал — в принципе он меня устраивает. Хотя эта новая идея выглядит достаточно логичной и удобной, и чуть более информативной чем текущий вариант =)

в Версия 1.0.3 так

скрытый текст
В userChrome.css

Выделить код

Код:

#urlbar{background-color: #000000 !important;color: #e1e0e0 !important;font-weight: bold !important;}


а в Версия 1.1.1 стало все черно, что можно сделать?

Ммм... Можно, конечно.

Выделить код

Код:

.textbox-presentation-protocol,
.textbox-presentation-subdomain,
.textbox-presentation-port,
.textbox-presentation-slash,
.textbox-presentation-path,
.textbox-presentation-file,
.textbox-presentation-query,
.textbox-presentation-fragment {
  color: rgba(0, 0, 0, 0.5);
}

Но это костылики. Хорошо бы как-то сделать, чтобы оно автоматом использовало верный цвет. Оригинальный Firefox при выделении домена в адресной строке берёт тот же цвет, но с 50% альфы. Вот только ума не приложу как средствами CSS можно изменить только альфу у color без изменения остальных компонентов. opacity — не то.

Так, в общем я извернулся с opacity. Можете проверить, будут ли нормальные цвета, если убрать все хаки?
[ссылка неактуальна]
Дополнение не подписано, то есть нужно отключить проверку подписей!

После проверки его надо будет удалить и поставить обратно версию из AMO. Если оно заработает без дополнительных стилей с цветами, то я в таком виде отправлю в AMO.

UPD: Проверил на тёмной теме Developer Edition. Работает как надо. Залил на AMO.

VEG
Спасибо!
Версия 1.1.3 - всё хорошо

Сделал отдельные темы по этим расширениям:
Advanced Locationbar
Omnibar Lite