Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№122-07-2013 20:48:58

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 22.0

[CB] Автовыделение ++

Автовыделение ++ ( Firefox24+ )
Автор: bunda1 (За что ему огромное спасибище!!!)
Версия: от 02.07.2016.
Описание: Выделяет различные слова или фразы на страницах во всех открытых вкладках. Для добавления слов или фраз их нужно либо выделить на странице, либо ввести в поле ввода при нажатии СКМ по кнопке. Слова/тексты могут быть введены неоднократно и добавятся к уже ранее введенным для автовыделения. Можно за один раз ввести несколько слов/текстов введенных через разделитель |. В подсказке к кнопке будут отображаться все слова/тексты для автовыделения.

Клики на кнопке:
ЛКМ - включить/выключить автовыделение
СКМ - добавить слова или текст для автовыделения (Приоритет: выделенные на странице > диалог ввода)
ПКМ - сбросить все слова/тексты и выключить автовыделение

Примечание: Так как замечен некий плавающий конфликт с дополнением FindBar Tweak, то в коде предусмотрено отключение этого джетпака на время работы кнопки.

Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20++%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD+//4B////APX69AV9vWaPVJsR9GabDPiQrDGn6OzRG////wD+/v0B////AP///gL///0B////AP///wD///8A////AP3+/gP///8ActGnhRyqVP83q0r8PqMu/kqZDf9yoh7Wu8t8YNjan07m4bM9+ffqCf///wD///4B////AP///wD8/v8C//7/AOL5/A4d1NrUFc/G/yHEov0qt3b/NKtM/UGeHv9WlAD/eJcB/peZAP+nphzH5+bAIP///wD+/v8A/fz/A/3+/wH///8A5/b+CyG8/c4Jz/z/ENfm/RrLuf8nu4b/M61S/UGgJvtbnBH8fqAQ/IKXAP+lrjax/v76AP7+/gH///8A7fD9CNni/Bb///8Ac7/4dQCn9/8P1f38ENbh/xzIsf8ouoD/NKtL/0GeHf9enA79dJ0M/4yiGOrx8d0c/f3/AJaT7105O+TOHTjn5GuP8n7u9v4AOK/3ugW/+/8N2vX9FdDN/yDDoP8rtXD/N6c//kqdGPpcnBD/dqIZ3/L05BCVht5rLhXE/zMj0f0nKuL/EkHp7+Dm/Bq64/wyBKz4/w/W/fwP1+X/Gsq4/ya+kPwwsWH+M58o/jSSAP+exXNr////AFkwrepXMrT8SjPG9icg2v8xRunM8fX+BfL5/gcdpPbOBMH8/w/b9vwX0dH+FcKk/yS3evFZum2rpdOaUPj79gD///8BZy6R8lsqn/8/Hbb/NSfS6MPE+DDj7PwI8vP9ALHe/DQXs/nWAs/9/wDV5v9C1Mmwye/jI////wD///8B////AP7+/gG/oclQgVSpuIhuy4/OyfIheHbpgx815+4vZ+7C2uf8Fuz5/we+8P83y/f8Jvb9/QL///8A8vv4CZPUpGO837Y5////AP///wD6+f0D////AIVy1IsgEsz/Lini+Qow5/+Gq/Vq////AM/t/Ruo6/4+6/z9C////wB817lzE6dQ/zGeJfOs05lI/Pv9Bf///wDXy+knTCOu7UYvxf89KtH4Fhrh/4yb9GTB3/sjCJH07QC9+v854Pio9///AFHOsrMktnX/NKtO/0KoPsz9/P0D////AMey2ElWJaL/UzG4+k0vv/4sGs/5vLn1Mkl68aoLcvD/G6j4+QDH+v+29f8xY9zUkA/Eo/8swpH3JL6M/P38/gL///8A08DcNF8kkPlgNar9Sh2m/3texp/i4PsPKTDk7hxP7P8eefD7Apb1/47Z/E2x8vw2AMrv/wXN5/8O0Ova////AP///wH8+/wAoHe0iWkukfN+U66v8+31C9PL7iA3H8n6KSzi/yNF6/sMVe3/rc35PP///wB/zv1qM7L7u53e/j7///8A////AP///wD7+fsB6NzqD/n2+gT///8A7uf0EV80rONFKcD/LCTU/zxC47/u8P4D////Af7+/gH//f4A///+AP///wD///8A//7/AP79/gL///8A/v7/Av38/gT///8AsZHEZmAplv5gOrPQzMbwKf///wD9/f4C/f//A/7//wL9/v8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20autoHighlight%28%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20toggleHighlightValue%28%27add%27%29%3B%0A%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20toggleHighlightValue%28%27clear%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20..........%0Avar%20s%20%3D%20%22CB.autoHighlight%22%3B%0Avar%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20array%20%3D%20getArray%28%29.map%28str%3D%3E%20%7B%20return%20str.slice%280%2C50%29%20+%20%28str.length%20%3E%2050%20%3F%20%22...%22%20%3A%20%22%22%29%20%7D%29%3B%0A%20%20%20this.tooltipText%20%3D%20%22%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20++%20%5Cn%u041B%3A%20B%u043A%u043B%u044E%u0447%u0438%u0442%u044C/%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%5Cn%u0421%3A%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%5Cn%5Cn%u0422%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%3A%20%5Cn%22%20+%20getArray%28%29.join%28%22%5Cn%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20..........%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%20%20%20%20%0A%20%20%20//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%27FindBar%20Tweak%27%20....%20%0A%20%20%20AddonManager.getAddonsByTypes%28%5B%22extension%22%5D%2C%20addons%3D%3E%20%7B%0A%20%20%20%20%20%20addons.forEach%28addon%3D%3E%20%7B%20if%20%28addon.name%20%3D%3D%20%27FindBar%20Tweak%27%29%20addon.userDisabled%20%3D%20cbu.getPrefs%28s%29%20%7D%29%3B%0A%20%20%20%7D%29%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%29%3B%20%0A%0A%0A//%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20..........%0Afunction%20autoHighlight%28%29%20%7B%0A%20%20var%20finder%20%3D%20gBrowser.finder%20%7C%7C%20gFindBar%3B%0A%20%20var%20lighted%20%3D%20%28finder._highlightDoc%20%7C%7C%20finder._highlight%29.bind%28finder%29%3B%0A%20%20lighted%28false%29%3B%20%20%20%0A%0A%20%20if%20%28%20cbu.getPrefs%28s%29%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20getArray%28%29%3B%0A%20%20%20%20%20%20%20while%28array.length%20%3E%200%29%20lighted%28true%2C%20array.shift%28%29%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u043E%u0439%20%u0438%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%u043C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u044E%u0442%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20..........%0Avar%20listener%20%3D%20%7B%20%0A%20%20%20onStateChange%3A%20function%28wpr%2C%20req%2C%20flag%29%20%7B%0A%20%20%20%20%20%20if%20%28%20gBrowser.currentURI.spec.startsWith%28%22http%22%29%20%26%26%20flag%20%26%20Ci.nsIWebProgressListener.STATE_STOP%20%29%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20autoHighlight%28%29%2C%200%29%3B%0A%20%20%20%7D%2C%0A%20%20%20%20%20%20%0A%20%20%20onLocationChange%3A%20function%28wpr%2C%20req%29%20%7B%0A%20%20%20%20%20%20if%20%28%20gBrowser.currentURI.spec.startsWith%28%22http%22%29%20%26%26%20%21req%20%26%26%20wpr.document.readyState%20%3D%3D%20%22complete%22%20%29%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20autoHighlight%28%29%2C%200%29%3B%0A%20%20%20%7D%20%20%20%20%20%20%20%0A%7D%3B%0AgBrowser.addProgressListener%28listener%29%3B%0AaddDestructor%28%28%29%3D%3E%20gBrowser.removeProgressListener%28listener%29%20%29%3B%0A%0A%20%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043B%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20%u0432%20%27about%3Aconfig%20..........%0Afunction%20toggleHighlightValue%28arg%29%20%7B%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27clear%27%29%0A%20%20%20%20%20%20%20var%20str%20%3D%20%27%27%2C%20notification%20%3D%20%22%u0422%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20%u0443%u0434%u0430%u043B%u0451%u043D%22%3B%0A%20%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27add%27%20%29%20%7B%20%20%0A%20%20%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20%28getArray%28%29%20%3D%3D%20%22%22%29%20%3F%20%22%22%20%3A%20getArray%28%29.join%28%22%7C%22%29%20+%20%22%7C%22%3B%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20if%20%28%20sel%20%29%20%7B%20var%20str%20%3D%20array%20+%20sel%20%7D%0A%20%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20val%20%3D%20custombuttons.promptBox%28self.label%2C%20%27B%u0432%u0435%u0434%u0438%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%3A%27%29%5B1%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20val%20%3D%3D%20%22%22%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20array%20+%20val%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20goDoCommand%28%22cmd_selectNone%22%29%3B%0A%20%20%20%20%20%20%20var%20notification%20%3D%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%3A%20%5Cn%22%20+%20%28sel%20%3F%20sel%20%3A%20val.replace%28/%5C%7C/g%2C%22%5Cn%22%29%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%0A%20%20cbu.setPrefs%28s%2C%20%28arg%20%3D%3D%20%27add%27%29%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20cbu.setPrefs%28%22CB.autoHighlight.value%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20str%29%29%3B%0A%20%20%0A%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20notification%29%3B%0A%20%20autoHighlight%28%29%3B%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0438%u0437%20%27about%3Aconfig%27%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0442%u0435%u043A%u0441%u0442%u0430%u043C%u0438%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20..........%0Afunction%20getArray%28%29%20%7B%20%0A%20%20%20try%20%7B%20return%20Services.prefs.getComplexValue%28%22CB.autoHighlight.value%22%2C%20Ci.nsISupportsString%29.data.split%28%22%7C%22%29%20%7D%20%0A%20%20%20catch%28e%29%20%7B%20return%20%5B%5D%20%7D%3B%0A%7D%3B%20%20%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20false%20..........%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20el%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20try%20%7B%20return%20el.value.substring%28el.selectionStart%2C%20el.selectionEnd%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29%3B%0A%20%20%20return%20%28sel%20%3D%3D%20%27%27%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код инициализации:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ..........
this.onclick =e=> {
   
   // действие при клике ЛКМ ....
   if ( e.button == 0 )
        autoHighlight( cbu.setPrefs(s, !cbu.getPrefs(s)) );
          
   // действие при клике СКМ ....    
   if ( e.button == 1 ) toggleHighlightValue('add');
     
   // действие при клике ПКМ ....    
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
        e.preventDefault();  
        toggleHighlightValue('clear');
        }
};


// Объявляем переменные для этой вкладки ..........
var s = "CB.autoHighlight";
var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);


// Подсказка для кнопки ...........
this.onmouseover =()=> {
   var array = getArray().map(str=> { return str.slice(0,50) + (str.length > 50 ? "..." : "") });
   this.tooltipText = "Автовыделение ++ \nЛ: Bключить/выключить \nС: Добавить текст\
                      \nП: Сбросить текст \n\nТекст для автовыделения: \n" + getArray().join("\n");
};


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек автовыделения ..........
function toggleImage() {
   self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").
   src = cbu.getPrefs(s)
   ? self.image
   : "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
    
   // переключить джетпак 'FindBar Tweak' .... 
   AddonManager.getAddonsByTypes(["extension"], addons=> {
      addons.forEach(addon=> { if (addon.name == 'FindBar Tweak') addon.userDisabled = cbu.getPrefs(s) });
   });
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage)); 


// Автоматически выделить текст ..........
function autoHighlight() {
  var finder = gBrowser.finder || gFindBar;
  var lighted = (finder._highlightDoc || finder._highlight).bind(finder);
  lighted(false);   

  if ( cbu.getPrefs(s) ) {   
       var array = getArray();
       while(array.length > 0) lighted(true, array.shift());
       } 
};


// Обработчик следит за загрузкой и переключением вкладки и запускают автовыделение ..........
var listener = { 
   onStateChange: function(wpr, req, flag) {
      if ( gBrowser.currentURI.spec.startsWith("http") && flag & Ci.nsIWebProgressListener.STATE_STOP )
           setTimeout(()=> autoHighlight(), 0);
   },
      
   onLocationChange: function(wpr, req) {
      if ( gBrowser.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete" )
           setTimeout(()=> autoHighlight(), 0);
   }       
};
gBrowser.addProgressListener(listener);
addDestructor(()=> gBrowser.removeProgressListener(listener) );

 
// Добавить или удалить текст для автовыделения в 'about:config ..........
function toggleHighlightValue(arg) { 
  if ( arg == 'clear')
       var str = '', notification = "Текст для автовыделения удалён";
  
  if ( arg == 'add' ) {  
       var sel = getSelect(); 
       var array = (getArray() == "") ? "" : getArray().join("|") + "|";     

       if ( sel ) { var str = array + sel }
       else 
            {
            var val = custombuttons.promptBox(self.label, 'Bведите текст для автовыделения:')[1];
            if ( val == "" ) return;
            var str = array + val;                
            }
       goDoCommand("cmd_selectNone");
       var notification = "Добавил текст для автовыделения: \n" + (sel ? sel : val.replace(/\|/g,"\n"));
       }
       
  cbu.setPrefs(s, (arg == 'add'));                  
  cbu.setPrefs("CB.autoHighlight.value", convertFromUnicode("UTF-8", str));
  
  alertsService.showAlertNotification(self.image, self.label, notification);
  autoHighlight();      
};


// Получить из 'about:config' массив с текстами для автовыделения ..........
function getArray() { 
   try { return Services.prefs.getComplexValue("CB.autoHighlight.value", Ci.nsISupportsString).data.split("|") } 
   catch(e) { return [] };
};  


// Получить выделенный текст из страницы или false ..........
function getSelect() {
   var el = document.commandDispatcher.focusedElement;
   try { return el.value.substring(el.selectionStart, el.selectionEnd) } catch(e) {};
   var sel = document.commandDispatcher.focusedWindow.getSelection();
   return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"");
};

Дополнительно: Наряду с существующими кликами со стандартными действиями, можно вводить свои варианты с заранее заданными словами/текстами. Например:

Выделить код

Код:

// действие при клике Shift + ЛКМ ....
     if ( e.button == 0 && !e.ctrlKey && e.shiftKey && !e.altKey && !e.metaKey ) {
          cbu.setPrefs("Auto.Highlight", true);
          prefs.setValue("Auto.Highlight.value", "слово1|текст номер один|слово2");
          autoHighlight();
          };

Установка кнопки: устанавливаем расширение Сustom Buttons, копируем в адресную строку браузера код кнопки и жмём перейти в адресной строке. Откроется окно диалога добавления кнопки, нажимаем Ok, потом откроется сообщение о успешном создании кнопки, опять нажимаем Ok. Потом открываем настройку панелей инструментов, перетаскиваем кнопку в нужное место на панели и начинаем пользоваться кнопкой.

Отредактировано Inko7 (22-07-2013 22:07:11)

Отсутствует

 

№205-10-2013 04:38:04

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 26.0

Re: [CB] Автовыделение ++

Годная штука. Автовыделяет даже на ajax страницах с автоподгрузкой.

Не работает в 26.

Отсутствует

 

№305-10-2013 12:29:05

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 17.0

Re: [CB] Автовыделение ++

wolwerine пишет

Не работает в 26.

Попробуй заменить (в двух местах)
gFindBar._highlightDoc   на   gBrowser.finder._highlight

Отсутствует

 

№405-10-2013 12:54:54

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 26.0

Re: [CB] Автовыделение ++

Dumby пишет

Попробуй заменить (в двух местах)
gFindBar._highlightDoc   на   gBrowser.finder._highlight

Теперь работает. Спасибо.

Отсутствует

 

№505-10-2013 15:18:30

Alexandrro
Участник
 
Группа: Members
Зарегистрирован: 26-03-2013
Сообщений: 104
UA: Firefox 24.0

Re: [CB] Автовыделение ++

Отличная кнопка. Давно о такой мечтал :) Спасибо.

Отсутствует

 

№619-10-2013 07:34:14

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 16.0
Веб-сайт

Re: [CB] Автовыделение ++

Установил. Работает.
Но у меня возникли мысли о кнопке, базирующейся на данной, но с несколько другими функциями.
1. Автозамена - заменяет выделенный текст на предложенный. То есть, содержит пары: выделенный текст - заменённый текст и левая часть (если находится) подменяется правой. Допускает реверс, когда правая часть меняется с левой.
2. Автоперевод - подобно автозамене, но в качестве замены - перевод гугла (или др. переводчика), который вручную можно менять как в автозамене. Будет прекрасным обучающим средством.
Учитывая, что в русском языке очень много флексий, необходимо ввести и wildcard, т.е. типа стул*, когда поиск осуществляется по "стул", но переводчику отправляется полное слово, которое и заменяется переводом. В случае с wildcard ручная замена не предусматривается.
Учитывая, что если набор таких пар может быть большой, что может замедлить работу, иметь возможность создавать несколько таких (но небольших) наборов.


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№726-07-2015 09:48:49

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 39.0

Re: [CB] Автовыделение ++

У кого нибудь работает выделение в 39 [firefox] ? И можно ли починить?


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№827-07-2015 21:47:20

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB] Автовыделение ++

villa7 пишет

У кого нибудь работает выделение в 39 [firefox] ? И можно ли починить?

На скорую руку:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ..........
this.onclick = function(e) {

    // действие при клике ЛКМ ....
    if ( e.button == 0 )  
         autoHighlight( cbu.setPrefs("Auto.Highlight", !cbu.getPrefs("Auto.Highlight")) );
          
    // действие при клике СКМ ....    
    if ( e.button == 1 ) toggleHighlightValue('add');
     
    // действие при клике ПКМ ....    
    if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
         e.preventDefault();  
         toggleHighlightValue('clear');
         }
};



// Объявляем переменные для этой вкладки ..........
var prefs = Application.prefs;
var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);



// Проверить наличие строк в about:config и создать если не существует ..........
if ( !cbu.isPref("Auto.Highlight") ) {        
     cbu.setPrefs("Auto.Highlight", false);         
     prefs.setValue("Auto.Highlight.value", "");         
};


// Подсказка для кнопки ..........
this.onmouseover = function() {
    // получить и обрезать подсказку для автовыделение ....
    var str = '', array = prefs.getValue("Auto.Highlight.value", 0).split("|");
  
    while( array.length > 0 ) {
           if ( array == '') break;  
           var value = array.shift();
           value = value.substring(0,50) + ( (value.length > 50) ? '....' : "" );
           str += "\n"  + str.split("\n").length  + ". " +  value;
           }
                    
    this.tooltipText = "Автовыделение ++ \nЛ: Bключить/выключить \nС: Добавить текст"
                                        + "\nП: Сбросить текст \n\nТекст для автовыделения: " + str;               
};
 


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек автовыделения ..........
var s = "Auto.Highlight";
function toggleImage() {
   self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").
   src = cbu.getPrefs( s )
   ? "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD+//4B////APX69AV9vWaPVJsR9GabDPiQrDGn6OzRG////wD+/v0B////AP///gL///0B////AP///wD///8A////AP3+/gP///8ActGnhRyqVP83q0r8PqMu/kqZDf9yoh7Wu8t8YNjan07m4bM9+ffqCf///wD///4B////AP///wD8/v8C//7/AOL5/A4d1NrUFc/G/yHEov0qt3b/NKtM/UGeHv9WlAD/eJcB/peZAP+nphzH5+bAIP///wD+/v8A/fz/A/3+/wH///8A5/b+CyG8/c4Jz/z/ENfm/RrLuf8nu4b/M61S/UGgJvtbnBH8fqAQ/IKXAP+lrjax/v76AP7+/gH///8A7fD9CNni/Bb///8Ac7/4dQCn9/8P1f38ENbh/xzIsf8ouoD/NKtL/0GeHf9enA79dJ0M/4yiGOrx8d0c/f3/AJaT7105O+TOHTjn5GuP8n7u9v4AOK/3ugW/+/8N2vX9FdDN/yDDoP8rtXD/N6c//kqdGPpcnBD/dqIZ3/L05BCVht5rLhXE/zMj0f0nKuL/EkHp7+Dm/Bq64/wyBKz4/w/W/fwP1+X/Gsq4/ya+kPwwsWH+M58o/jSSAP+exXNr////AFkwrepXMrT8SjPG9icg2v8xRunM8fX+BfL5/gcdpPbOBMH8/w/b9vwX0dH+FcKk/yS3evFZum2rpdOaUPj79gD///8BZy6R8lsqn/8/Hbb/NSfS6MPE+DDj7PwI8vP9ALHe/DQXs/nWAs/9/wDV5v9C1Mmwye/jI////wD///8B////AP7+/gG/oclQgVSpuIhuy4/OyfIheHbpgx815+4vZ+7C2uf8Fuz5/we+8P83y/f8Jvb9/QL///8A8vv4CZPUpGO837Y5////AP///wD6+f0D////AIVy1IsgEsz/Lini+Qow5/+Gq/Vq////AM/t/Ruo6/4+6/z9C////wB817lzE6dQ/zGeJfOs05lI/Pv9Bf///wDXy+knTCOu7UYvxf89KtH4Fhrh/4yb9GTB3/sjCJH07QC9+v854Pio9///AFHOsrMktnX/NKtO/0KoPsz9/P0D////AMey2ElWJaL/UzG4+k0vv/4sGs/5vLn1Mkl68aoLcvD/G6j4+QDH+v+29f8xY9zUkA/Eo/8swpH3JL6M/P38/gL///8A08DcNF8kkPlgNar9Sh2m/3texp/i4PsPKTDk7hxP7P8eefD7Apb1/47Z/E2x8vw2AMrv/wXN5/8O0Ova////AP///wH8+/wAoHe0iWkukfN+U66v8+31C9PL7iA3H8n6KSzi/yNF6/sMVe3/rc35PP///wB/zv1qM7L7u53e/j7///8A////AP///wD7+fsB6NzqD/n2+gT///8A7uf0EV80rONFKcD/LCTU/zxC47/u8P4D////Af7+/gH//f4A///+AP///wD///8A//7/AP79/gL///8A/v7/Av38/gT///8AsZHEZmAplv5gOrPQzMbwKf///wD9/f4C/f//A/7//wL9/v8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
   : "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
    
   // переключить джетпак 'FindBar Tweak' .... 
   AddonManager.getAddonsByTypes(["extension"], function(addons) {  
   addons.forEach(function(addon, i) {
        if ( addons[i].name == 'FindBar Tweak' ) {
             addons[i].userDisabled = cbu.getPrefs( s );
             }                                        
        }) 
   });          
};
toggleImage();
gPrefService.addObserver( s, toggleImage, false );
addDestructor(function() gPrefService.removeObserver( s, toggleImage ));



// Автоматически выделить слова или ссылки ..........
function autoHighlight() {
  var finder = gBrowser.finder || gFindBar;
  var lighted = (finder._highlightDoc || finder._highlight).bind(finder);
  
  lighted(false);   
  
  if ( cbu.getPrefs("Auto.Highlight") ) {
       var sel = getBrowserSelection();   
       var array = prefs.getValue("Auto.Highlight.value", 0).split("|"); 
       if ( sel.length ) array.push(sel);
       
       while( array.length > 0 ) lighted( true, array.shift() );
       } 
};



// Обработчик следит за загрузкой и переключением вкладки и запускают автовыделение ..........
var listener = {
   onLocationChange: function(wpr, req) {
      if ( gBrowser.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete" )
           autoHighlight();
      self.onLocationChange = true;        
   },   
   onStateChange: function(wpr, req, flag) {       
      if ( !gBrowser.currentURI.spec.startsWith("http") ) return;
      
      if ( !self.onLocationChange && (flag & Ci.nsIWebProgressListener.STATE_STOP) ) 
           autoHighlight();
      self.onLocationChange = false;
   }   
};   
gBrowser.addProgressListener(listener);
addDestructor(function() gBrowser.removeProgressListener(listener));



// Запускать автовыделение выделением текста, если это разрешено в 'about:config' ..........
function handleEvent(e) {
   if (
       e.button
       || gURLBar.focused
       || !cbu.getPrefs("Auto.Highlight")
       || e.originalTarget instanceof XULElement
       || e.target instanceof Ci.nsIDOMNSEditableElement
       || e.target.ownerGlobal.top != content
       || gBrowser.currentURI.spec.startsWith("about:stylish-edit")
       || !getBrowserSelection()
      ) return;
      
    setTimeout(function() autoHighlight(), 50);      
};
addEventListener("mouseup", handleEvent, false, gBrowser );
addEventListener("mousedown", handleEvent, false, gBrowser );


 
// Добавляет текст или удаляет текст для автовыделения ..........
function toggleHighlightValue( arg ) { 
  if ( arg == 'clear') {
       var str = '', notification = "Текст для автовыделения удален";
       
       cbu.setPrefs("Auto.Highlight", false ); 
       }        
  
  if ( arg == 'add') {  
       var str = getSelect();
       var array = prefs.getValue("Auto.Highlight.value", 0);
       var array = (array.length == 0) ? '' : array + "|";     
       
       if ( str ) { var str = array + str }
       else 
            {
            var val = custombuttons.promptBox( self.label, 'Bведите текст для автовыделения:');
            if ( val[0] == false ) return;
            if ( val[1] == "" ) return;
            val = val[0] ? val[1] : array;
            str = array + val                   
            }
       goDoCommand("cmd_selectNone");
        
       var notification = '', arr = str.split("|");  
       while( arr.length > 0 ) {
              var value = arr.shift();
              value = value.substring(0,30) + ( (value.length > 30) ? '....' : "" );
              notification += "\n" + notification.split("\n").length  + ". " +  value;
              }
       
       cbu.setPrefs("Auto.Highlight", true );      
       }
              
  prefs.setValue("Auto.Highlight.value", str);
  alertsService.showAlertNotification(self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").
                                      src, self.label, notification, false, "", null, "");     
  autoHighlight();      
};



// Получить выделенный текст из страницы, если нет текста получить false ..........
function getSelect() {
   var sel = document.commandDispatcher.focusedWindow.getSelection().toString(); // из страницы
   if (sel == '') {    
       var el = document.commandDispatcher.focusedElement;                       // из текстового поля
       if ( el && el.textLength ) 
            sel = el.value.substring(el.selectionStart, el.selectionEnd);  
       } 
   return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"");
};

Отредактировано bunda1 (30-07-2015 22:40:32)

Отсутствует

 

№928-07-2015 18:30:16

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: [CB] Автовыделение ++

bunda1 пишет

На скорую руку:

При обновлении/открытии вкладки - не выделяет.

Отсутствует

 

№1028-07-2015 19:15:41

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB] Автовыделение ++

turbot пишет

При обновлении/открытии вкладки - не выделяет.

Я сейчас проверил на FF42 и вроде работает при обновлении/открытии вкладки. Может на чистом профиле проверь.

Отсутствует

 

№1128-07-2015 19:25:46

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: [CB] Автовыделение ++

bunda1
Проверил на чистом - тоже самое. В консоли тишина. idontnow.gif

Отсутствует

 

№1228-07-2015 19:30:28

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB] Автовыделение ++

А enable multi-process выключен?

Отсутствует

 

№1328-07-2015 19:33:49

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: [CB] Автовыделение ++

bunda1
Да. На новом профиле тоже выключал.

Добавлено 28-07-2015 19:38:07
bunda1
О, с таймаутом - работает.

Добавлено 28-07-2015 19:45:33
Это уже не первый раз у меня: пока задержку не выставишь - не срабатывают некоторые кнопки. Неужели такой компьютер у меня шустрый? :)

Отредактировано turbot (28-07-2015 19:45:33)

Отсутствует

 

№1428-07-2015 19:47:06

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB] Автовыделение ++

turbot пишет

О, с таймаутом - работает.

Точно работает, теперь понятно в чём дело: На скорую руку:

Добавлено 28-07-2015 19:52:39

turbot пишет

Это уже не первый раз у меня: пока задержку не выставишь - не срабатывают некоторые кнопки. Неужели такой компьютер у меня шустрый? :)

Да есть такое, непонятно почему.

Отредактировано bunda1 (28-07-2015 19:52:39)

Отсутствует

 

№1528-07-2015 23:07:13

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 39.0

Re: [CB] Автовыделение ++

bunda1
turbot
Блин, как у вас работает не могу понять. Чистый профиль 39, не хочет.
f8ee3dde083a6bf2ad9dc0968fa413f6.jpeg


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1628-07-2015 23:30:19

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: [CB] Автовыделение ++

villa7

скрытый текст
У меня с заменой:

Выделить код

Код:

// Обработчик следит за загрузкой и переключением вкладки и запускают автовыделение ..........
var listener = { 
   onStateChange: function(wpr, req, flag) {
      if ( !gBrowser.currentURI.spec.startsWith("http") ) return; 
      if ( flag & Ci.nsIWebProgressListener.STATE_STOP ) autoHighlight();
   },
      
   onLocationChange: function(wpr, req) {
      if ( gBrowser.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete")
           autoHighlight();    
   }       
};
gBrowser.addProgressListener( listener );
addDestructor(function() gBrowser.removeProgressListener(listener) );

на:

Выделить код

Код:

// Обработчик следит за загрузкой и переключением вкладки и запускают автовыделение ..........
var listener = { 
   onStateChange: function(wpr, req, flag) {
      if ( !gBrowser.currentURI.spec.startsWith("http") ) return; 
      if ( flag & Ci.nsIWebProgressListener.STATE_STOP ) setTimeout(function() {autoHighlight();}, 100);
   },
      
   onLocationChange: function(wpr, req) {
      if ( gBrowser.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete")
           setTimeout(function() {autoHighlight();}, 100);
   }       
};
gBrowser.addProgressListener( listener );
addDestructor(function() gBrowser.removeProgressListener(listener) );

работает. Попробуйте еще увеличить задержку (100), если так не будет.

Отсутствует

 

№1729-07-2015 15:38:12

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Chrome 44.0

Re: [CB] Автовыделение ++

villa7 пишет

Блин, как у вас работает не могу понять. Чистый профиль 39, не хочет.

Если у тебя портативный FF39, можешь мне послать, разберусь.

Отсутствует

 

№1829-07-2015 16:37:50

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 39.0

Re: [CB] Автовыделение ++

bunda1
Да, портабле, не работает даже на чистом.
https://dropmefiles.com/0VQPQ
Сейчас экспериментировал, если просто выделить слово, то ничего не происходит, но если нажать СКМ по кнопке, то выделение срабатывает, так и должно быть, или должно просто выделением срабатывать?

Отредактировано villa7 (29-07-2015 16:54:16)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1929-07-2015 18:04:50

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB] Автовыделение ++

villa7 пишет

Сейчас экспериментировал, если просто выделить слово, то ничего не происходит, но если нажать СКМ по кнопке, то выделение срабатывает, так и должно быть, или должно просто выделением срабатывать?

Конечно так и должно быть по изначальному коду кнопки, слова для автовыделения добавляются по СКМ на кнопке. Кстати в описание кнопки ты не правильно указал - Для добавления слов или фраз их нужно либо выделить на странице
А ты хотел чтобы автовыделялис все одинаковые слова обычным выделением?

Добавлено 29-07-2015 18:06:15
Попробовал твою сборку, кнопка работает с учётом вышесказанного.

Отредактировано bunda1 (29-07-2015 18:06:15)

Отсутствует

 

№2029-07-2015 18:34:33

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 39.0

Re: [CB] Автовыделение ++

bunda1

А ты хотел чтобы автовыделялис все одинаковые слова обычным выделением?

Это было бы идеально. Дело в том что с 39 версии Toggle Find у меня начал конфликтовать с другими кнопками, скриптами. Поэтому ищу замену попроще.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№2130-07-2015 22:41:24

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB] Автовыделение ++

villa7 пишет

Это было бы идеально.

На скорую руку

Добавлено 30-07-2015 22:44:35
Вот только как много цветавую выделение сделать :(

Отредактировано bunda1 (30-07-2015 22:44:35)

Отсутствует

 

№2231-07-2015 00:02:42

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 32.0

Re: [CB] Автовыделение ++

bunda1
Мне многоцветие не нужно, мне бы чтобы при поиске выделением подсвечивал слова на других страницах, как это происходит когда в окошко вставляешь слово. Но вставлять каждый раз муторно. И добавить бы функцию которая при выделении вставлялось в Findbar. типа - // Запускать поиск выделением текста мышью, если это разрешено в 'about:config' И всё, больше мне ничего не нужно. Получился бы облегченный Toggle Find


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№2319-08-2015 16:42:16

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: Seamonkey 2.33

Re: [CB] Автовыделение ++

Отличная штука, спасибо!

Отредактировано fokanik (19-08-2015 16:57:29)

Отсутствует

 

№2429-09-2015 13:58:33

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 43.0

Re: [CB] Автовыделение ++

Почему-то не работает с e10s.

Отсутствует

 

№2529-09-2015 21:38:25

Доктор ТуамОсес
Участник
 
Группа: Members
Зарегистрирован: 21-04-2014
Сообщений: 220
UA: Firefox 35.0

Re: [CB] Автовыделение ++

А можно использовать базу данных REGEX-ов для выделения?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]