Автовыделение ++ ( 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)
Отсутствует
Отличная кнопка. Давно о такой мечтал Спасибо.
Отсутствует
Установил. Работает.
Но у меня возникли мысли о кнопке, базирующейся на данной, но с несколько другими функциями.
1. Автозамена - заменяет выделенный текст на предложенный. То есть, содержит пары: выделенный текст - заменённый текст и левая часть (если находится) подменяется правой. Допускает реверс, когда правая часть меняется с левой.
2. Автоперевод - подобно автозамене, но в качестве замены - перевод гугла (или др. переводчика), который вручную можно менять как в автозамене. Будет прекрасным обучающим средством.
Учитывая, что в русском языке очень много флексий, необходимо ввести и wildcard, т.е. типа стул*, когда поиск осуществляется по "стул", но переводчику отправляется полное слово, которое и заменяется переводом. В случае с wildcard ручная замена не предусматривается.
Учитывая, что если набор таких пар может быть большой, что может замедлить работу, иметь возможность создавать несколько таких (но небольших) наборов.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
У кого нибудь работает выделение в 39 ? И можно ли починить?
На скорую руку:
// Настройка функций кликов мыши для кнопки .......... 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)
Отсутствует
При обновлении/открытии вкладки - не выделяет.
Я сейчас проверил на FF42 и вроде работает при обновлении/открытии вкладки. Может на чистом профиле проверь.
Отсутствует
bunda1
Да. На новом профиле тоже выключал.
Добавлено 28-07-2015 19:38:07
bunda1
О, с таймаутом - работает.
Добавлено 28-07-2015 19:45:33
Это уже не первый раз у меня: пока задержку не выставишь - не срабатывают некоторые кнопки. Неужели такой компьютер у меня шустрый?
Отредактировано turbot (28-07-2015 19:45:33)
Отсутствует
О, с таймаутом - работает.
Точно работает, теперь понятно в чём дело: На скорую руку:
Добавлено 28-07-2015 19:52:39
Это уже не первый раз у меня: пока задержку не выставишь - не срабатывают некоторые кнопки. Неужели такой компьютер у меня шустрый?
Да есть такое, непонятно почему.
Отредактировано bunda1 (28-07-2015 19:52:39)
Отсутствует
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), если так не будет.
Отсутствует
bunda1
Да, портабле, не работает даже на чистом.
https://dropmefiles.com/0VQPQ
Сейчас экспериментировал, если просто выделить слово, то ничего не происходит, но если нажать СКМ по кнопке, то выделение срабатывает, так и должно быть, или должно просто выделением срабатывать?
Отредактировано villa7 (29-07-2015 16:54:16)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Сейчас экспериментировал, если просто выделить слово, то ничего не происходит, но если нажать СКМ по кнопке, то выделение срабатывает, так и должно быть, или должно просто выделением срабатывать?
Конечно так и должно быть по изначальному коду кнопки, слова для автовыделения добавляются по СКМ на кнопке. Кстати в описание кнопки ты не правильно указал - Для добавления слов или фраз их нужно либо выделить на странице
А ты хотел чтобы автовыделялис все одинаковые слова обычным выделением?
Добавлено 29-07-2015 18:06:15
Попробовал твою сборку, кнопка работает с учётом вышесказанного.
Отредактировано bunda1 (29-07-2015 18:06:15)
Отсутствует
bunda1
А ты хотел чтобы автовыделялис все одинаковые слова обычным выделением?
Это было бы идеально. Дело в том что с 39 версии Toggle Find у меня начал конфликтовать с другими кнопками, скриптами. Поэтому ищу замену попроще.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Это было бы идеально.
Добавлено 30-07-2015 22:44:35
Вот только как много цветавую выделение сделать
Отредактировано bunda1 (30-07-2015 22:44:35)
Отсутствует
bunda1
Мне многоцветие не нужно, мне бы чтобы при поиске выделением подсвечивал слова на других страницах, как это происходит когда в окошко вставляешь слово. Но вставлять каждый раз муторно. И добавить бы функцию которая при выделении вставлялось в Findbar. типа - // Запускать поиск выделением текста мышью, если это разрешено в 'about:config' И всё, больше мне ничего не нужно. Получился бы облегченный Toggle Find
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
А можно использовать базу данных REGEX-ов для выделения?
Отсутствует