>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB] Автовыделение ++ http://forum.mozilla-russia.org/viewtopic.php?id=59745 |
Inko7 > 22-07-2013 20:48:58 |
Автовыделение ++ ( Firefox24+ ) Клики на кнопке: Примечание: Так как замечен некий плавающий конфликт с дополнением 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. Потом открываем настройку панелей инструментов, перетаскиваем кнопку в нужное место на панели и начинаем пользоваться кнопкой. |
wolwerine > 05-10-2013 04:38:04 |
Годная штука. Автовыделяет даже на ajax страницах с автоподгрузкой. Не работает в 26. |
Dumby > 05-10-2013 12:29:05 |
wolwerine пишет
Попробуй заменить (в двух местах) |
wolwerine > 05-10-2013 12:54:54 |
Dumby пишет
Теперь работает. Спасибо. |
Alexandrro > 05-10-2013 15:18:30 |
Отличная кнопка. Давно о такой мечтал Спасибо. |
difabor > 19-10-2013 07:34:14 |
Установил. Работает. |
villa7 > 26-07-2015 09:48:49 |
У кого нибудь работает выделение в 39 ? И можно ли починить? |
bunda1 > 27-07-2015 21:47:20 |
villa7 пишет
На скорую руку: Выделить код Код:// Настройка функций кликов мыши для кнопки .......... 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,""); }; |
turbot > 28-07-2015 18:30:16 |
bunda1 пишет
При обновлении/открытии вкладки - не выделяет. |
bunda1 > 28-07-2015 19:15:41 |
turbot пишет
Я сейчас проверил на FF42 и вроде работает при обновлении/открытии вкладки. Может на чистом профиле проверь. |
turbot > 28-07-2015 19:25:46 |
bunda1 |
bunda1 > 28-07-2015 19:30:28 |
А enable multi-process выключен? |
turbot > 28-07-2015 19:33:49 |
bunda1 28-07-2015 19:38:07 28-07-2015 19:45:33 |
bunda1 > 28-07-2015 19:47:06 |
turbot пишет
Точно работает, теперь понятно в чём дело: На скорую руку: 28-07-2015 19:52:39 turbot пишет
Да есть такое, непонятно почему. |
villa7 > 28-07-2015 23:07:13 |
bunda1 |
turbot > 28-07-2015 23:30:19 |
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 > 29-07-2015 15:38:12 |
villa7 пишет
Если у тебя портативный FF39, можешь мне послать, разберусь. |
villa7 > 29-07-2015 16:37:50 |
bunda1 |
bunda1 > 29-07-2015 18:04:50 |
villa7 пишет
Конечно так и должно быть по изначальному коду кнопки, слова для автовыделения добавляются по СКМ на кнопке. Кстати в описание кнопки ты не правильно указал - Для добавления слов или фраз их нужно либо выделить на странице 29-07-2015 18:06:15 |
villa7 > 29-07-2015 18:34:33 |
bunda1
Это было бы идеально. Дело в том что с 39 версии Toggle Find у меня начал конфликтовать с другими кнопками, скриптами. Поэтому ищу замену попроще. |
bunda1 > 30-07-2015 22:41:24 |
villa7 пишет
30-07-2015 22:44:35 |
villa7 > 31-07-2015 00:02:42 |
bunda1 |
fokanik > 19-08-2015 16:42:16 |
Отличная штука, спасибо! |
wolwerine > 29-09-2015 13:58:33 |
Почему-то не работает с e10s. |
Доктор ТуамОсес > 29-09-2015 21:38:25 |
А можно использовать базу данных REGEX-ов для выделения? |
bunda1 > 30-09-2015 17:56:15 |
wolwerine пишет
|
vitalu330 > 10-10-2015 12:20:41 |
Описываю пошагово: создал кнопку (вид - добавить кнопку), поместил код в Инициализация, дальше саму кнопку переместил на панель с расширениями, добавил несколько слов для теста, включил автовыделение левой кнопкой мыши. И ничего не выделяет. Перегружал вкладку. Отключал и снова включал автовыделение. Что я делаю не так и почему не работает? |
bunda1 > 12-10-2015 20:38:15 |
vitalu330 пишет
Вроде работает 27-07-2015 21:47:20 если e10s выключен. |
Доктор ТуамОсес > 25-10-2015 15:12:22 |
А можно использовать базу данных REGEX-ов для выделения? |
Inko7 > 20-11-2015 22:43:04 |
По мне, так очень неплохая замена: https://forum.mozilla-russia.org/viewtopic.php?pid=700048#p700048 |
bunda1 > 09-07-2016 13:31:32 |
Может кто хочет попробовать кнопку Многоцветное автовыделение: Выделить код Код: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%u041C%u043D%u043E%u0433%u043E%u0446%u0432%u0435%u0442%u043D%u043E%u0435%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%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%20%7B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%3B%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%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%0Avar%20colors%20%3D%20%5B%22%23FFFF00%22%2C%20%22%23FF0000%22%2C%20%22%2366FFFF%22%2C%20%22%2366FF99%22%2C%20%22%23FFA500%22%2C%20%22%23FF00FF%22%5D%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%20self.label%20+%20%22%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%u0432%u0441%u0435%20%u0438%u0441%u043A%u043E%u043C%u044B%u0435%20%u0442%u0435%u043A%u0441%u0442%u044B%20%u0440%u0430%u0437%u043D%u044B%u043C%u0438%20%u0446%u0432%u0435%u0442%u0430%u043C%u0438%20..........%0Afunction%20doHighlight%28node%20%3D%20content.document.body%29%20%7B%0A%20%20%20if%20%28%20%21cbu.getPrefs%28s%29%20%29%20return%3B%0A%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u043D%u0435%20%u043F%u0443%u0441%u0442%u043E%u0439%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0439%20%u0443%u0437%u0435%u043B%0A%20%20%20if%20%28%20node.nodeName%20%3D%3D%20%22%23text%22%20%26%26%20node.data.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%20%21%3D%20%22%22%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20var%20data%20%3D%20node.data.toLowerCase%28%29%3B%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20getArray%28%29.filter%28str%3D%3E%20%7B%20return%20%7Edata.indexOf%28str%29%20%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20arr%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20arr.reverse%28%29.forEach%28str%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20parentNode%20%3D%20node.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20color%20%3D%20colors%5BgetArray%28%29.indexOf%28str%29%5D%3B%0A%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%20%20%20%20if%20%28%20parentNode.className%20%3D%3D%20_id%20%29%20%7B%20//%20%u0435%u0441%u043B%u0438%20%u043D%u0430%u0434%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u043C%20%u0443%u0437%u043B%u043E%u043C%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u0443%u0436%u0435%20%u0441%u043E%u0437%u0434%u0430%u043B%u0430%20span%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parentNode.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%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%20%20%20%20var%20span%20%3D%20content.document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20_id%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20middle%20%3D%20node.splitText%28data.indexOf%28str%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20middle.splitText%28str.length%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.appendChild%28middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%20node.nodeType%20%3D%3D%201%20%26%26%20node.firstChild%20%26%26%20%21/script%7Cstyle/.test%28node.localName%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...node.childNodes%5D.forEach%28node%3D%3E%20doHighlight%28node%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%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%20doHighlight%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%20doHighlight%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%0A//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20..........%0Afunction%20clearHighlight%28reason%29%20%7B%0A%20%20%20if%20%28%20reason%20%26%26%20reason%20%21%3D%20%22delete%22%20%29%20return%3B%0A%0A%20%20%20for%20%28%20var%20br%20of%20gBrowser.browsers%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%5B...br.contentDocument.querySelectorAll%28%27SPAN%5Bclass%3D%27%20+%20_id%20+%20%27%5D%27%29%5D%0A%20%20%20%20%20%20%20%20%20.forEach%28el%3D%3E%20el.style%20%3D%20%22%22%20%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%20%0AaddDestructor%28clearHighlight%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%20%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.toLowerCase%28%29%29%29%3B%0A%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%0A%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20notification%29%3B%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/*CODE*/%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 Всё то же самое как в Автовыделение ++ кроме того что различные слова или фразы выделяются разными цветами. |
Dobrov > 30-09-2016 08:58:55 |
Как убрать подсветку для одного слова, а уже остальные добавленные слова оставить? Сбрасывать всё ранее накопленные слова в ноль не вариант, их бывает много нужных. |
bunda1 > 05-10-2016 20:42:42 |
Dobrov пишет
Я добавил такую возможность в Многоцветное автовыделение по Shift+ПКМ. |
Inko7 > 06-10-2016 12:18:31 |
bunda1 хочу попросить про еще вот такую доработку: получаем следующее: и еще, можно ли в начало кода кнопки вынести как-то возможность задавать очередность цветов, чтобы самому определить какой цвет первый, какой второй и т.д. и поправить алерт, чтобы сам скрывался, а не как сейчас жать на крестик закрытия спасибо |
bunda1 > 06-10-2016 12:29:33 |
Inko7 пишет
В строке: можно менять цвета и очередность цветов как хочешь. |
Inko7 > 06-10-2016 12:46:27 |
bunda1 |
bunda1 > 07-10-2016 13:45:13 |
Inko7 пишет
|
Dobrov > 08-10-2016 02:19:51 |
bunda1 пишет
У меня не получается настроить Многоцветное выделение. Иконка осветлённая (не работает) на Firefox 38 и 48.0.2_win32 49.1. В чистом профиле только расширение CustomButtons и кнопка. |
bunda1 > 08-10-2016 17:51:29 |
Dobrov пишет
Не понятно в чём тут проблема, у меня работает на разных версиях. 08-10-2016 17:54:09 Dobrov пишет
Да есть такое. В коде инициализации кнопки в строке: по аналогии добавь дополнительные цвета - http://www.stm.dp.ua/web-design/color-html.php |
Dobrov > 09-10-2016 00:50:03 |
bunda1 пишет
а если будет добавлено 100 слов, то и цветов столько же надо? |
bunda1 > 09-10-2016 12:25:08 |
Dobrov пишет
Ну как бы да. Могу сделать так что бы цвета повторялись. |
Dobrov > 10-10-2016 00:06:51 |
bunda1 пишет
Цвета не особо важны, пусть повторяются, тем более хорошо различимых цветов фона не так уж много. |
Dobrov > 22-06-2017 03:27:20 |
Прошу сделать пару доработок отличной кнопки "Многоцветное автовыделение" от 07.10.2016 |
Ultima2m > 22-06-2017 06:00:39 |
Hi, bunda1 скрытый текст но автор отказался от поддержки и оно будет работать только до осени. (уже сейчас глючит на последних версиях ФФ - риски со скроллбара перескочили на леву. сторону) Можно ли эту фишку прикрутить к кнопке? |
bunda1 > 25-06-2017 20:22:35 |
Dobrov пишет
Одноцветное автовыделение: Выделить код Код: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%u041E%u0434%u043D%u043E%u0446%u0432%u0435%u0442%u043D%u043E%u0435%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%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%20%7B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%3B%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%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%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%0A%20%20%20%20%20%20%20%20function%20observer%28subject%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20%28e%2C%20doc%20%3D%20e.target%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20doc.URL.startsWith%28%22chrome%3A//custombuttons%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.ww.unregisterNotification%28observer%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.getElementsByTagName%28%22tabs%22%29%5B0%5D.children%5B2%5D.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20Services.ww.registerNotification%28observer%29%3B%0A%0A%20%20%20%20%20%20%20%20custombuttons.editButton%28this%29%3B%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%0A%20%20%20%20%20%20%20%20%7D%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%20Ctrl%20+%20%u041F%u041A%u041C%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%20e.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%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%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%3B%0A%0A%0A//%20%u0426%u0432%u0435%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%2C%20%u043C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20..........%0Avar%20color%20%3D%20%22%23FFFF00%22%3B%20//%22%23FF0000%22%2C%20%22%2366FFFF%22%2C%20%22%2366FF99%22%2C%20%22%23FFA500%22%2C%20%22%23FF00FF%22%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%20self.label%20+%20%22%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%5Cn%u041F%3A%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%5CnShift+%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0432%u0435%u0441%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%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+%20array.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..........%0Avar%20s%20%3D%20%22CB.autoHighlight%22%3B%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%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%u0432%u0441%u0435%20%u0438%u0441%u043A%u043E%u043C%u044B%u0435%20%u0442%u0435%u043A%u0441%u0442%u044B%20%u0440%u0430%u0437%u043D%u044B%u043C%u0438%20%u0446%u0432%u0435%u0442%u0430%u043C%u0438%20..........%0Afunction%20doHighlight%28node%20%3D%20content.document.body%29%20%7B%0A%20%20%20if%20%28%20%21cbu.getPrefs%28s%29%20%7C%7C%20%21node%29%20return%3B%0A%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u043D%u0435%20%u043F%u0443%u0441%u0442%u043E%u0439%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0439%20%u0443%u0437%u0435%u043B%0A%20%20%20if%20%28%20node.nodeName%20%3D%3D%20%22%23text%22%20%26%26%20node.data.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20data%20%3D%20node.data.toLowerCase%28%29%2C%20array%20%3D%20getArray%28%29%3B%0A%20%20%20%20%20%20%20%20array.pop%28%29%3B%0A%20%20%20%20%20%20%20%20var%20highlightText%20%3D%20array%3B%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20highlightText.filter%28str%3D%3E%20%7B%20return%20%7Edata.indexOf%28str%29%20%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20arr%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20arr.reverse%28%29.forEach%28str%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20parentNode%20%3D%20node.parentNode%3B%0A%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%20%20%20%20if%20%28%20parentNode.className%20%3D%3D%20_id%20%29%20%7B%20//%20%u0435%u0441%u043B%u0438%20%u043D%u0430%u0434%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u043C%20%u0443%u0437%u043B%u043E%u043C%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u0443%u0436%u0435%20%u0441%u043E%u0437%u0434%u0430%u043B%u0430%20span%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parentNode.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20span%20%3D%20content.document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20_id%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20middle%20%3D%20node.splitText%28data.indexOf%28str%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20middle.splitText%28str.length%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.appendChild%28middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%20node.nodeType%20%3D%3D%201%20%26%26%20node.firstChild%20%26%26%20%21/script%7Cstyle/.test%28node.localName%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...node.childNodes%5D.forEach%28node%3D%3E%20doHighlight%28node%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AdoHighlight%28%29%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%20doHighlight%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%20doHighlight%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%0A//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20..........%0Afunction%20clearHighlight%28reason%20%3D%20false%29%20%7B%0A%20%20%20if%20%28%20reason%20%3D%3D%20%27destructor%27%20%29%20return%3B%0A%20%20%20%0A%20%20%20for%20%28%20var%20br%20of%20gBrowser.browsers%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%5B...br.contentDocument.querySelectorAll%28%27SPAN%5Bclass%3D%27%20+%20_id%20+%20%27%5D%27%29%5D%0A%20%20%20%20%20%20%20%20%20.forEach%28el%3D%3E%20el.style%20%3D%20%22%22%20%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%20%0AaddDestructor%28clearHighlight%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..........%0Afunction%20toggleHighlightValue%28arg%29%20%7B%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27clear%27%20%29%0A%20%20%20%20%20%20%20var%20text%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%2C%20array%20%3D%20getArray%28%29%3B%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20%28array%20%3D%3D%20%22%22%29%20%3F%20%22%22%20%3A%20array.join%28%22%5Cn%22%29%20+%20%22%5Cn%22%3B%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20if%20%28%20sel%20%29%20%7B%20var%20text%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%20text%20%3D%20array%20+%20val.split%28%22%7C%22%29.join%28%22%5Cn%22%29%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%0A%20%20saveTextToHelp%28text.toLowerCase%28%29%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%0A%20%20cbu.setPrefs%28s%2C%20%28arg%20%3D%3D%20%27add%27%29%29%3B%0A%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%0A%20%20var%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20notification%29%3B%0A%20%20setTimeout%28%28%29%3D%3E%20alertsService.closeAlert%28%29%2C%201500%29%3B%0A%7D%3B%0A%0A%0A//%20%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%27%u0421%u043F%u0440%u0430%u0432%u043A%u0430%27%20..........%0Afunction%20saveTextToHelp%28text%29%20%7B%0A%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20dir.initWithPath%28dir.path%20+%20%22%5C%5Cextensions%5C%5Ccustombuttons@xsms.org%5C%5Ccomponents%5C%5CCustomButtonsService.js%22%29%3B%0A%20%20%20var%20url%20%3D%20Services.io.newFileURI%28dir%29.spec%2C%20cbs%20%3D%20%7B%7D%3B%0A%20%20%20Services.scriptloader.loadSubScript%28url%2C%20cbs%29%3B%0A%20%20%20var%20AO%20%3D%20new%20cbs.AppObject%28%29%2C%20btn%20%3D%20AO.getButton%28_id%29%3B%0A%0A%20%20%20self.setAttribute%28%22Help%22%2C%20text%29%3B%0A%20%20%20btn.setAttribute%28%22Help%22%2C%20text%29%3B%0A%20%20%20AO.overlay.saveOverlayToProfile%28%29%3B%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%27%u0421%u043F%u0440%u0430%u0432%u043A%u0430%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%0A%20%20%20return%20%28custombutton.buttonGetHelp%28self%29%29.toLowerCase%28%29.split%28%22%5Cn%22%29.filter%28el%3D%3E%20/%5CS/.test%28el%29%29%3B%0A%7D%3B%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/*CODE*/%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 25-06-2017 20:24:57 Ultima2m пишет
Ну нет, это сложно и нет гарантии что не поломается безвозвратно при очередном обновлении Firefox. |
Dobrov > 26-06-2017 12:47:46 |
bunda1 пишет
спасибо за работу, но слова через диалог по СКМ не добавляются - в Справке ничего не появляется. |
bunda1 > 26-06-2017 14:07:18 |
пишет
Разве ты это не просил ? пишет
|
Dobrov > 27-06-2017 00:16:21 |
bunda1 пишет
Нет, я сообщил о неисправности и хотел бы, чтобы все слова подсвечивались! |
bunda1 > 27-06-2017 19:46:03 |
Dobrov Выделить код Код: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%u041E%u0434%u043D%u043E%u0446%u0432%u0435%u0442%u043D%u043E%u0435%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%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%20%7B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%3B%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%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%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%0A%20%20%20%20%20%20%20%20function%20observer%28subject%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20%28e%2C%20doc%20%3D%20e.target%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20doc.URL.startsWith%28%22chrome%3A//custombuttons%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Services.ww.unregisterNotification%28observer%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.getElementsByTagName%28%22tabs%22%29%5B0%5D.children%5B2%5D.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20Services.ww.registerNotification%28observer%29%3B%0A%0A%20%20%20%20%20%20%20%20custombuttons.editButton%28this%29%3B%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%0A%20%20%20%20%20%20%20%20%7D%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%20Ctrl%20+%20%u041F%u041A%u041C%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%20e.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%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%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%3B%0A%0A%0A//%20%u0426%u0432%u0435%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%2C%20%u043C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20..........%0Avar%20color%20%3D%20%22%23FFFF00%22%3B%20//%22%23FF0000%22%2C%20%22%2366FFFF%22%2C%20%22%2366FF99%22%2C%20%22%23FFA500%22%2C%20%22%23FF00FF%22%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%20self.label%20+%20%22%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%5Cn%u041F%3A%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%5CnShift+%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0432%u0435%u0441%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%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+%20array.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..........%0Avar%20s%20%3D%20%22CB.autoHighlight%22%3B%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%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%u0432%u0441%u0435%20%u0438%u0441%u043A%u043E%u043C%u044B%u0435%20%u0442%u0435%u043A%u0441%u0442%u044B%20%u0440%u0430%u0437%u043D%u044B%u043C%u0438%20%u0446%u0432%u0435%u0442%u0430%u043C%u0438%20..........%0Afunction%20doHighlight%28node%20%3D%20content.document.body%29%20%7B%0A%20%20%20if%20%28%20%21cbu.getPrefs%28s%29%20%7C%7C%20%21node%29%20return%3B%0A%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u043D%u0435%20%u043F%u0443%u0441%u0442%u043E%u0439%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0439%20%u0443%u0437%u0435%u043B%0A%20%20%20if%20%28%20node.nodeName%20%3D%3D%20%22%23text%22%20%26%26%20node.data.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20data%20%3D%20node.data.toLowerCase%28%29%2C%20highlightText%20%3D%20getArray%28%29%3B%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20highlightText.filter%28str%3D%3E%20%7B%20return%20%7Edata.indexOf%28str%29%20%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20arr%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20arr.reverse%28%29.forEach%28str%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20parentNode%20%3D%20node.parentNode%3B%0A%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%20%20%20%20if%20%28%20parentNode.className%20%3D%3D%20_id%20%29%20%7B%20//%20%u0435%u0441%u043B%u0438%20%u043D%u0430%u0434%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u043C%20%u0443%u0437%u043B%u043E%u043C%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u0443%u0436%u0435%20%u0441%u043E%u0437%u0434%u0430%u043B%u0430%20span%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parentNode.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20span%20%3D%20content.document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20_id%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20middle%20%3D%20node.splitText%28data.indexOf%28str%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20middle.splitText%28str.length%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.appendChild%28middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%20node.nodeType%20%3D%3D%201%20%26%26%20node.firstChild%20%26%26%20%21/script%7Cstyle/.test%28node.localName%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...node.childNodes%5D.forEach%28node%3D%3E%20doHighlight%28node%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AdoHighlight%28%29%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%20doHighlight%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%20doHighlight%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%0A//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20..........%0Afunction%20clearHighlight%28reason%20%3D%20false%29%20%7B%0A%20%20%20if%20%28%20reason%20%3D%3D%20%27destructor%27%20%29%20return%3B%0A%20%20%20%0A%20%20%20for%20%28%20var%20br%20of%20gBrowser.browsers%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%5B...br.contentDocument.querySelectorAll%28%27SPAN%5Bclass%3D%27%20+%20_id%20+%20%27%5D%27%29%5D%0A%20%20%20%20%20%20%20%20%20.forEach%28el%3D%3E%20el.style%20%3D%20%22%22%20%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%20%0AaddDestructor%28clearHighlight%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..........%0Afunction%20toggleHighlightValue%28arg%29%20%7B%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27clear%27%20%29%0A%20%20%20%20%20%20%20var%20text%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%2C%20array%20%3D%20getArray%28%29%3B%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20%28array%20%3D%3D%20%22%22%29%20%3F%20%22%22%20%3A%20array.join%28%22%5Cn%22%29%20+%20%22%5Cn%22%3B%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20if%20%28%20sel%20%29%20%7B%20var%20text%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%20text%20%3D%20array%20+%20val.split%28%22%7C%22%29.join%28%22%5Cn%22%29%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%0A%20%20saveTextToHelp%28text.toLowerCase%28%29%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%0A%20%20cbu.setPrefs%28s%2C%20%28arg%20%3D%3D%20%27add%27%29%29%3B%0A%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%0A%20%20var%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20notification%29%3B%0A%20%20setTimeout%28%28%29%3D%3E%20alertsService.closeAlert%28%29%2C%201500%29%3B%0A%7D%3B%0A%0A%0A//%20%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%27%u0421%u043F%u0440%u0430%u0432%u043A%u0430%27%20..........%0Afunction%20saveTextToHelp%28text%29%20%7B%0A%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20dir.initWithPath%28dir.path%20+%20%22%5C%5Cextensions%5C%5Ccustombuttons@xsms.org%5C%5Ccomponents%5C%5CCustomButtonsService.js%22%29%3B%0A%20%20%20var%20url%20%3D%20Services.io.newFileURI%28dir%29.spec%2C%20cbs%20%3D%20%7B%7D%3B%0A%20%20%20Services.scriptloader.loadSubScript%28url%2C%20cbs%29%3B%0A%20%20%20var%20AO%20%3D%20new%20cbs.AppObject%28%29%2C%20btn%20%3D%20AO.getButton%28_id%29%3B%0A%0A%20%20%20self.setAttribute%28%22Help%22%2C%20text%29%3B%0A%20%20%20btn.setAttribute%28%22Help%22%2C%20text%29%3B%0A%20%20%20AO.overlay.saveOverlayToProfile%28%29%3B%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%27%u0421%u043F%u0440%u0430%u0432%u043A%u0430%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%0A%20%20%20return%20%28custombutton.buttonGetHelp%28self%29%29.toLowerCase%28%29.split%28%22%5Cn%22%29.filter%28el%3D%3E%20/%5CS/.test%28el%29%29%3B%0A%7D%3B%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%20sel%20%3D%20gBrowser.contentDocument.defaultView.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%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%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%u0442%u0440%u0430%u043D%u0441%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
Dobrov > 13-07-2017 03:39:50 |
bunda1 - благодарю, за исправленный код кнопки! Очередной вопрос/просьба - как сделать работу двух кнопок "Автовыделение", чтобы они не влияли друг на друга? женские имена Агафья Агриппина Акулина Алевтина Александра Алина Алла Анастасия Ангелина Анжела Анжелика Анна Антонина Валентина Валерия Варвара Василиса Вера Вероника Виктория Галина Глафира Дана Дарья Евгения Евдокия Евпраксия Евфросиния Екатерина Елена Елизавета Ермиония Жанна Зинаида Злата Зоя Инга Инесса Иоанна Ираида Ирина Карина Каролина Кира Клавдия Ксения Лада Лариса Лидия Лилия Любовь Людмила Маргарита Марина Мария Марфа Матрёна Мирослава Надежда Наина Наталья Нина Нонна Оксана Октябрина Ольга Пелагея Полина Прасковья Раиса Регина Светлана Серафима Снежана София Таисия Тамара Тать Ульяна Фаина Феврония Фёкла Феодора Целестина Юлия Яна |
difabor > 16-07-2017 05:04:47 |
1. У меня не работает Services.scriptloader.loadSubScript(url, cbs) в функции saveTextToHelp(text) при занесении слова в Справку скрытый текст Выделить код Код:function saveTextToHelp(text) { var dir = Services.dirsvc.get("ProfD", Ci.nsIFile); dir.initWithPath(dir.path + "\\extensions\\custombuttons@xsms.org\\components\\CustomButtonsService.js"); var url = Services.io.newFileURI(dir).spec, cbs = {}; alert(0); Services.scriptloader.loadSubScript(url, cbs); alert(1); var AO = new cbs.AppObject(), btn = AO.getButton(_id); self.setAttribute("Help", text); btn.setAttribute("Help", text); AO.overlay.saveOverlayToProfile(); }; Имеется ввиду код из №49 2. И ещё у меня вопрос: как можно заменить сами найденные слова на другие? Например, на одно и то же "куку"? 16-07-2017 05:34:06 bunda1 пишет
Можно сделать по модулю: var color = colors[highlightText.indexOf(str)%colors.length] |
bunda1 > 26-07-2017 12:57:37 |
difabor пишет
Я проверил и всё работает: Выделить код Код:function saveTextToHelp(text) { var dir = Services.dirsvc.get("ProfD", Ci.nsIFile); dir.initWithPath(dir.path + "\\extensions\\custombuttons@xsms.org\\components\\CustomButtonsService.js"); var url = Services.io.newFileURI(dir).spec, cbs = {}; Services.scriptloader.loadSubScript(url, cbs); var AO = new cbs.AppObject(), btn = AO.getButton(_id); self.setAttribute("Help", text); btn.setAttribute("Help", text); AO.overlay.saveOverlayToProfile(); }; saveTextToHelp('kkkkllhjhhjjnhjjkkkk'); difabor пишет
Надо получить текст текстового узла на странице, изменить в тексте ножное слово и переписать текст. |
difabor > 26-07-2017 13:52:45 |
bunda1 пишет
У меня этот код не работает |
bunda1 > 26-07-2017 21:18:04 |
difabor пишет
Custom Buttons • View topic - [Signed fixed extension attached] CB broken on Firefox 48+ |
difabor > 26-07-2017 23:10:37 |
bunda1 пишет
Поставил последнюю: Custom Buttons • View topic - [Signed fixed extension attached] CB broken on Firefox 48+ от Infocatcher, всё равно не помогает... Выделить код Код:function saveTextToHelp(text) { var dir = Services.dirsvc.get("ProfD", Ci.nsIFile); dir.initWithPath(dir.path + "\\extensions\\custombuttons@xsms.org\\components\\CustomButtonsService.js"); var url = Services.io.newFileURI(dir).spec, cbs = {}; alert(1) // --> срабатывает Services.scriptloader.loadSubScript(url, cbs); alert(2) // --> не срабатывает var AO = new cbs.AppObject(), btn = AO.getButton(_id); self.setAttribute("Help", text); btn.setAttribute("Help", text); AO.overlay.saveOverlayToProfile(); }; saveTextToHelp('kkkkllhjhhjjnhjjkkkk'); |
yup > 26-07-2017 23:41:51 |
difabor пишет
Вызвать консоль браузера (Ctrl-Shift-J) и смотреть, что в неё в этот момент пишется. |
difabor > 27-07-2017 03:37:35 |
yup пишет
Большое спасибо! Нашёл причину! Консоль мне это объяснила! |
bunda1 > 27-07-2017 11:11:39 |
difabor пишет
Спасибо, эта важная информация. |