Есть функция
Эту функцию я запускать не хочу. но могу получить её аргументы в виде строки - просто взять из кода страницы. А теперь я хочу запустить другую функцию с этими же аргументами. Как это сделать?
Отредактировано hartumov (20-08-2015 14:56:49)
Отсутствует
Уважаемые спецы! Нет ли возможности, создать кнопку работающую по принципу расширения User Agent Switcher? Само расширение глючит или конфликтует с чем то.
А на моей 16 лисе, сейчас очень актуально иметь возможность быстрой смены useragent.
Отсутствует
Так была такая кнопка User-agent change
Не помню где брал.
Вот код, если надо
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%3EUser-agent%20change%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AJkyAACZMwAAmTIAAJcwAACUKQBAqVIh1J48CX6YMAAAmTMAAJkzAACZMwAAmDEAAP///wD///8A////AP///wCZMgAAmTMAAJQqABadNwiRz45Y+fTUo/+fPgyKlSoAAJcvAACZMgAAmTMAAJgxAAD///8A////AP///wD///8Aly8AAZUvAV65Xyji8LBn///XiP/6xoD/r1wq56hRIcmkSxm7ljEBcZcwAAeZMQAA////AP///wD///8A////AKFCEcfhkkn//7VY//+vUP//qEn//7BY//+5Yv//uF7//LVd/92NQ/+fPAq4li8AC////wD///8A////AP///wCdOQiLyGYe8vieP///rkz//6ZE//6nS//vkTj/7Ywz//qcPf//tFD/4og3/5gwAIb///8A////AP///wD///8AmDEAAJMrACikQQ2w2o9J///RgP/8xHn/oD4LyZYvAYmjPwzH8bNn///Zh/+0WiDn////AP///wD///8A////AJkyAACZMgAAli4AAJQrAFa3ZjDb5rp9/6JCDoqXLgAAkykALbhoMf/Wpmr/sVsl/////wD///8A////AP///wCZMwAAmTMAAJkzAACZMgAAlCsAEZo3BIiaNAFPmTMAAJo0AAeWLgBGkykASpcwAEX///8A////AP///wD///8AmDEAU5QqAFmWLgBXmjQADJkzAACaNQJJnj0Km5QqAB+ZMQAAmTMAAJkzAACZMwAA////AP///wD///8A////ALBZI//dr3H/wHU9/5IpAECWLgAAnjsIeem9gP/Bdz7qli8BbZUtAAOZMgAAmTIAAP///wD///8A////AP///wCtUBff/858//e6a/+qSRLYmTIEmaA9CMr3um///9J//+ObUf+rShPFkysAPJcwAAD///8A////AP///wD///8AlS4Acth8L///tE///6E///OSNv/0lTn//qVJ//+jQP//q0j//aNB/9JyJf2fPQug////AP///wD///8A////AJcvAAObNgaf1II9//eyXv/+tmD//rdj//+zXf//q0z//7JU//+1Wf/fkUn/okMSv////wD///8A////AP///wCYMAAAmDEAAJUuAFugQxKqpEoauqhRINz2xID//9qM/+6vZ/+2XCXelC4AWZcwAAD///8A////AP///wD///8AmDAAAJkzAACZMwAAlzAAAJYsAACcOAZ47sub/8yLVvWbNQaKlCsAEpkyAACZMwAA////AP///wD///8A////AJgwAACZMwAAmTMAAJkzAACYMQAAnDkGbqZMG9STKQA8ly8AAJkzAACZMgAAmTMAAP///wD///8A/H8AAPB/AADABwAAwAMAAMADAADgAwAA+EMAAPxDAADCPwAAwg8AAMAHAADAAwAAwAMAAPAHAAD+DwAA/j8AAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20ps%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIPrefService%29.%20getBranch%20%28%22general.%22%29%3B%0A%20%20%20%20ps.%20setCharPref%20%28%22useragent.override%22%2C%20%22reset%22%29%3B%0A%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.PS.clearUserPref%28%22general.useragent.override%22%29%3B%0Athis.image%3D%0A%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AJkyAACZMwAAmTIAAJcwAACUKQBAqVIh1J48CX6YMAAAmTMAAJkzAACZMwAAmDEAAP///wD///8A////AP///wCZMgAAmTMAAJQqABadNwiRz45Y+fTUo/+fPgyKlSoAAJcvAACZMgAAmTMAAJgxAAD///8A////AP///wD///8Aly8AAZUvAV65Xyji8LBn///XiP/6xoD/r1wq56hRIcmkSxm7ljEBcZcwAAeZMQAA////AP///wD///8A////AKFCEcfhkkn//7VY//+vUP//qEn//7BY//+5Yv//uF7//LVd/92NQ/+fPAq4li8AC////wD///8A////AP///wCdOQiLyGYe8vieP///rkz//6ZE//6nS//vkTj/7Ywz//qcPf//tFD/4og3/5gwAIb///8A////AP///wD///8AmDEAAJMrACikQQ2w2o9J///RgP/8xHn/oD4LyZYvAYmjPwzH8bNn///Zh/+0WiDn////AP///wD///8A////AJkyAACZMgAAli4AAJQrAFa3ZjDb5rp9/6JCDoqXLgAAkykALbhoMf/Wpmr/sVsl/////wD///8A////AP///wCZMwAAmTMAAJkzAACZMgAAlCsAEZo3BIiaNAFPmTMAAJo0AAeWLgBGkykASpcwAEX///8A////AP///wD///8AmDEAU5QqAFmWLgBXmjQADJkzAACaNQJJnj0Km5QqAB+ZMQAAmTMAAJkzAACZMwAA////AP///wD///8A////ALBZI//dr3H/wHU9/5IpAECWLgAAnjsIeem9gP/Bdz7qli8BbZUtAAOZMgAAmTIAAP///wD///8A////AP///wCtUBff/858//e6a/+qSRLYmTIEmaA9CMr3um///9J//+ObUf+rShPFkysAPJcwAAD///8A////AP///wD///8AlS4Acth8L///tE///6E///OSNv/0lTn//qVJ//+jQP//q0j//aNB/9JyJf2fPQug////AP///wD///8A////AJcvAAObNgaf1II9//eyXv/+tmD//rdj//+zXf//q0z//7JU//+1Wf/fkUn/okMSv////wD///8A////AP///wCYMAAAmDEAAJUuAFugQxKqpEoauqhRINz2xID//9qM/+6vZ/+2XCXelC4AWZcwAAD///8A////AP///wD///8AmDAAAJkzAACZMwAAlzAAAJYsAACcOAZ47sub/8yLVvWbNQaKlCsAEpkyAACZMwAA////AP///wD///8A////AJgwAACZMwAAmTMAAJkzAACYMQAAnDkGbqZMG9STKQA8ly8AAJkzAACZMgAAmTMAAP///wD///8A/H8AAPB/AADABwAAwAMAAMADAADgAwAA+EMAAPxDAADCPwAAwg8AAMAHAADAAwAAwAMAAPAHAAD+DwAA/j8AAA%3D%3D%27%3B%0A%0A%0Avar%20%u043C%u0435%u043D%u044E%20%3D%0A%27%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%5Cn%5C%0A%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.%u0441%u043C%u0435%u043D%u0438%u0442%u044C%u042E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%28event%29%22%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22reset%22%20label%3D%22Default%20User-Agent%22/%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuseparator/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20MSIE%2010.0%3B%20Windows%20NT%208.0%3B%20Win64%3B%20x64%3B%20Trident/5.0%3B%20.NET4.0E%3B%20ru%29%22%20label%3D%22WinNT%20x64%20IE%2010.0%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28compatible%2C%20MSIE%2011%2C%20Windows%20NT%206.3%3B%20Win64%3B%20x64%3B%20Trident/7.0%3B%20rv%3A11.0%29%20like%20Gecko%22%20label%3D%22Win8.1%20x64%20IE-11.0%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%20NT%206.1%29%20AppleWebKit/537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome/43.0%20Safari/537.36%22%20label%3D%22Chrome%2043.0%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Opera/9.80%20%28X11%3B%20Linux%20i686%3B%20Ubuntu/14.10%29%20Presto/2.12.388%20Version/12.16%22%20label%3D%22Opera%2012.16%20/%20Linux%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Android%204.2%3B%20Linux%20armv7l%3B%20rv%3A9.0%29%20Gecko/20111216%20Firefox/38.0%20Fennec/38.0%22%20label%3D%22Android%204.2%20/%20Fennec%2038.0%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22AppEngine-Google%3B%20%28+http%3A//code.google.com/appengine%3B%20appid%3A%20unblock4myspace%29%22%20label%3D%22AppEngine-Google%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%205.1%3B%20ru%3B%20rv%3A1.9.2.3%29%20Gecko/20100401%20Firefox/3.6.15%20YB/3.5.1%22%20label%3D%22FF%203.6.15+yandexbar%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22iCab/3.0.2%20%28Macintosh%3B%20U%3B%20PPC%20Mac%20OS%29%22%20label%3D%22iCab/Mac%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28X11%3B%20Linux%20x86_64%3B%20rv%3A2.0b6pre%29%20Gecko/20100401%20Firefox/38.0.1%22%20label%3D%22Firefox-38.0.1%20/%20Linux%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22AmigaVoyager/3.2%20%28AmigaOS/MC680x0%29%22%20label%3D%22AmigaVoyager%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20en-US%3B%20rv%3A1.9.1.3%29%20Gecko/20090914%20Slackware/13.0_stable%20Firefox/3.5.3%22%20label%3D%22Slackware%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Macintosh%3B%20U%3B%20PPC%20Mac%20OS%20X%2010.4%3B%20ru%3B%20rv%3A1.9.2.3%29%20Gecko/20100401%20Firefox/38.0.1%22%20label%3D%22Firefox-38.0.1%20Mac%20OS%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NCSA%20Mosaic/1.0%20%28X11%3BSunOS%204.1.4%20sun4m%29%22%20label%3D%22NCSA%20Mosaic-1.0%20/%20SunOS%204.1.4%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NetSurf/2.0%20%28RISC%20OS%3B%20armv5l%3B%20NetSurf/2.0%29%22%20label%3D%22NetSurf-2.0%20RISC%20OS%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28BeOS%3B%20U%3B%20Haiku%20BePC%3B%20en-US%3B%20rv%3A38.0.1.1%29%20Gecko/20080112%22%20label%3D%22Mozilla-38.0.1%20/%20BeOS%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28OS/2%3B%20U%3B%20Warp%204.5%3B%20en-US%3B%20rv%3A1.8.1.3pre%29%20Gecko/20070307%22%20label%3D%22Mozilla/5.0%20OS/2%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28PLAYSTATION%203%3B%202.00%29%22%20label%3D%22Mozilla/5.0%20%28PLAYSTATION%203%3B%202.00%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Links%20%286.9%3B%20Unix%206.9-astral%20sparc%3B%2080x25%29%22%20label%3D%22Links%20/%20Unix%22/%3E%5Cn%5C%0A%3C/menupopup%3E%27%3B%0A%0A%0A%u043C%u0435%u043D%u044E%20%3D%20e4xConv_parseXULFromString%20%28%u043C%u0435%u043D%u044E%29%3B%0A%u043C%u0435%u043D%u044E.%20childNodes%20%5B0%5D.%20setAttribute%20%28%22checked%22%2C%20%22true%22%29%3B%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20type%20%3D%20%22menu%22%3B%0Athis.%20appendChild%20%28%u043C%u0435%u043D%u044E%29%3B%0Athis.%20%u0441%u043C%u0435%u043D%u0438%u0442%u044C%u042E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%20%3D%20function%20%28%u0441%u043E%u0431%u044B%u0442%u0438%u0435%29%0A%7B%0A%20%20%20%20var%20%u044E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%20%3D%20%u0441%u043E%u0431%u044B%u0442%u0438%u0435.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20%20%20%20var%20ps%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIPrefService%29.%20getBranch%20%28%22general.%22%29%3B%0A%20%20%20%20ps.%20setCharPref%20%28%22useragent.override%22%2C%20%u044E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%29%3B%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%27general.useragent.override%27%3B%0Avar%20state%3Dthis.PS.getCharPref%28this.pref%29%3B%0Aif%20%28state%3D%3D%22reset%22%29%20%7B%20%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%27general.useragent.override%27%3B%0Avar%20state%3Dthis.PS.getCharPref%28this.pref%29%3B%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.PS.clearUserPref%28%22general.useragent.override%22%29%3B%20%0Athis.image%3D%0A%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AJkyAACZMwAAmTIAAJcwAACUKQBAqVIh1J48CX6YMAAAmTMAAJkzAACZMwAAmDEAAP///wD///8A////AP///wCZMgAAmTMAAJQqABadNwiRz45Y+fTUo/+fPgyKlSoAAJcvAACZMgAAmTMAAJgxAAD///8A////AP///wD///8Aly8AAZUvAV65Xyji8LBn///XiP/6xoD/r1wq56hRIcmkSxm7ljEBcZcwAAeZMQAA////AP///wD///8A////AKFCEcfhkkn//7VY//+vUP//qEn//7BY//+5Yv//uF7//LVd/92NQ/+fPAq4li8AC////wD///8A////AP///wCdOQiLyGYe8vieP///rkz//6ZE//6nS//vkTj/7Ywz//qcPf//tFD/4og3/5gwAIb///8A////AP///wD///8AmDEAAJMrACikQQ2w2o9J///RgP/8xHn/oD4LyZYvAYmjPwzH8bNn///Zh/+0WiDn////AP///wD///8A////AJkyAACZMgAAli4AAJQrAFa3ZjDb5rp9/6JCDoqXLgAAkykALbhoMf/Wpmr/sVsl/////wD///8A////AP///wCZMwAAmTMAAJkzAACZMgAAlCsAEZo3BIiaNAFPmTMAAJo0AAeWLgBGkykASpcwAEX///8A////AP///wD///8AmDEAU5QqAFmWLgBXmjQADJkzAACaNQJJnj0Km5QqAB+ZMQAAmTMAAJkzAACZMwAA////AP///wD///8A////ALBZI//dr3H/wHU9/5IpAECWLgAAnjsIeem9gP/Bdz7qli8BbZUtAAOZMgAAmTIAAP///wD///8A////AP///wCtUBff/858//e6a/+qSRLYmTIEmaA9CMr3um///9J//+ObUf+rShPFkysAPJcwAAD///8A////AP///wD///8AlS4Acth8L///tE///6E///OSNv/0lTn//qVJ//+jQP//q0j//aNB/9JyJf2fPQug////AP///wD///8A////AJcvAAObNgaf1II9//eyXv/+tmD//rdj//+zXf//q0z//7JU//+1Wf/fkUn/okMSv////wD///8A////AP///wCYMAAAmDEAAJUuAFugQxKqpEoauqhRINz2xID//9qM/+6vZ/+2XCXelC4AWZcwAAD///8A////AP///wD///8AmDAAAJkzAACZMwAAlzAAAJYsAACcOAZ47sub/8yLVvWbNQaKlCsAEpkyAACZMwAA////AP///wD///8A////AJgwAACZMwAAmTMAAJkzAACYMQAAnDkGbqZMG9STKQA8ly8AAJkzAACZMgAAmTMAAP///wD///8A/H8AAPB/AADABwAAwAMAAMADAADgAwAA+EMAAPxDAADCPwAAwg8AAMAHAADAAwAAwAMAAPAHAAD+DwAA/j8AAA%3D%3D%27%3B%0A%0A%20%7D%0A%20else%20%7B%20this.image%3D%0A%27data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIADkAgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAAFzUkdCAK7OHOkAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjOM5pdQAAACVUlEQVQ4T3WTMWhTURSG2zSaNqRRqU0N1MbUUGnStNDGtMagoqFFaR2qCELpoBUUFaQ4SV2kOKmDODrJm+Th9CYJDhK3ThLFIThlKpkkSCuvuX5/zJM3aODjvHty/v/ed867XW7LDXTxU4QkxCDo/myGKi9fLdnpCVP7WLno/nJz5KchA1MwBjEJuzsGQTiAMOH+aAYQDFWebho3EDRuOGLK6w9Nc7uxQP4KdddgAdIS9oJ270EY33pjGWd1Zds+X3Lt0dQfgw7OaGqX//eovQpZaWWgY2vHPnt1pVXzCf6HdaZoqL+PbkYGURb9lRfPZrd8RXVo+NYeZeCE59CdhLwMDmEwYo0M170ii8Y5N9bM63zONDu5dr5QVEMn0VyCSXRhGaRkYgWCvEjQ6BS19+XnNDNZfrL5Rblq7LBhIp8QLFN7llgixuGWDBLQXX1rT8AUTZpVMzUZjAo6SeNr9SY1MYQ5yMIR1v1w0DPQFAbhKMQp6GVkw86jDYPpEjmNd6z6zh7HdABC5IbguAzSUEAUgRNwD5Epd0bI/Hf1bdQ/VzNOIPit3QtAsw5ZGYTbJhyLo363Ly/u+BunRuojUgO9nE1P0DyGjAx6IEnRAzsa+VvkoVFqpN5az7yaNtQrTMtgv3a32Mkv/Bcys+ZLhibfRqNxRmUQYtFHzDCBoqPj+URaO5jzaRs+tg36MUPtsQ77ZDCgB8hjNEf3l/XOnkH7ueWu8d8i8TRRF+ku8Q4xIQONUBdKp1A/xiFW+1BOcJV3uJHXKT5FTrdvvhMvwJzbcgd/A3Q4lrpREVkLAAAAAElFTkSuQmCC%27%3B%0A%0A%20%7D%3B%0A%7D%0A%20%20%0A%0Afunction%20e4xConv_parseXULFromString%28xul%29%20%7B%0A%09xul%20%3D%20xul.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%0A%09return%20new%20DOMParser%28%29.parseFromString%28xul%2C%20%22application/xml%22%29.documentElement%3B%0A%7D%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
Отсутствует
bunda1, а жест (скрипт) "закрыть вкладку справа (следующую)" возможен?
Отсутствует
Добрый день.
Имеется замечательная кнопка Vertical Toolbar (к сожалению не могу найти на неё ссылку).
/*Initialization Code*/ var button = this; const sideBarAutoClose = false; // true => включить авто закрытие боковой панели const autoCloseDelay = 500; // ms const showDelay = 250; // ms const distanceShow = 2; // px const distanceHide = 64; // px const vtWidthCorrection = -111; // px ( number [ + or - ] ) // -1 const toolbarId = "vertical_toolbar"; const toolboxId = toolbarId + "_toolbox"; const sep = "\u00A0"; const firstAttributes = "\ id %id% class chromeclass-toolbar fullscreentoolbar true context toolbar-context-menu _width 40 \ customizable true flex 1 iconize large mode icons orient vertical widthcorr 0" .replace(/ /g, sep).replace(/%id%/, toolbarId); // .................................................................................................... const pn = "custombutton.verticaltoolbar.attributes"; var prefs = Application.prefs; if (!prefs.has(pn)) prefs.setValue(pn, firstAttributes); var pref = prefs.get(pn); function getAttr_pref() { return pref.value } function setAttr_pref() { pref.value = ""; Array.slice(document.getElementById(toolbarId).attributes).forEach(function(attr) { pref.value += (attr.name + sep + attr.value + sep); }); } // .................................................................................................... var browser = document.getElementById("browser"); var toolbar = document.getElementById(toolbarId); var toolbox = document.getElementById(toolboxId); if (!toolbar) { toolbox = document.createElement("toolbox"); toolbox.id = toolboxId; toolbox.palette = gNavToolbox.palette; toolbar = document.createElement("toolbar"); toolbar.style.minWidth = "20px"; // 20 browser.insertBefore(toolbox, browser.firstChild); toolbox.appendChild(toolbar); // .................................................................................................... // Thanks - http://nanto.asablo.jp/blog/2007/04/22/1459018 const style ='\ \ toolbar[orient="vertical"] {\n\ -moz-appearance: none;\n\ border-bottom: 0px none;\n\ border-top: 0px none;\n\ border-right: 1px solid rgb(170, 188, 207);\n\ background: none repeat scroll 0% 0% rgb(207, 219, 236);\n\ -image: -moz-linear-gradient(rgba(155, 255, 255, .5), rgba(255, 255, 255, 0) 27px) !important;\n\ }\n\ toolbar[orient="vertical"] > toolbarseparator,\n\ toolbar[orient="vertical"] > [id^="wrapper-separator"] {\n\ -moz-appearance: none !important;\n\ margin: 0.2em 2px;\n\ border-bottom: 1px solid ThreeDHighlight;\n\ border-top: 1px solid ThreeDShadow;\n\ height: 2px;\n\ border-left: none;\n\ border-right: none;\n\ }\n\ toolbar[orient="vertical"] > toolbarspacer,\n\ toolbar[orient="vertical"] > [id^="wrapper-spacer"] { height: 15px; }' var sspi = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURI(style) + '"'); document.insertBefore(sspi, document.documentElement); // .................................................................................................... var attr = getAttr_pref().split(sep); for (var i=0; i<(attr.length-1); i+=2) { toolbar.setAttribute(attr[i], attr[i+1]); } var currentSet = toolbar.getAttribute("currentset").split(","); currentSet.forEach(function(id){ toolbar.insertItem(id); }); } // .................................................................................................... var et = gNavToolbox.externalToolbars; var already = false; for (var i=0; i<et.length; i++) { if (et[i] == toolbar) { already = true; break } } if (!already) et[et.length] = toolbar; var delta = toolbar.getAttribute("widthcorr") - vtWidthCorrection; toolbar.setAttribute("widthcorr", vtWidthCorrection); if (delta) toolbar.setAttribute("_width", toolbar.getAttribute("_width") - delta); function lock() { var width = toolbar.getAttribute("_width"); toolbox.style.position = toolbar.hasAttribute("autohide") ? "" : "fixed"; toolbox.style.height = toolbar.style.height = browser.boxObject.height + "px"; toolbar.style.maxWidth = toolbar.style.minWidth = toolbox.style.maxWidth = toolbox.style.minWidth = width * !toolbar.collapsed + "px"; } function beforeCustomize() { toolbox.removeAttribute("style"); toolbox.removeAttribute("width"); toolbar.removeAttribute("style"); toolbar.style.minWidth = "20px"; } function customizationChange() { window.setTimeout(function() { toolbar.setAttribute("_width", toolbar.boxObject.width + vtWidthCorrection); }, 640); } function afterCustomize() { setAttr_pref(); removeListeners(); lock(); } function collapser(e) { var distance = e.screenX - browser.boxObject.screenX; if (toolbar.waiting) return; if ((distance <= distanceShow) && (toolbar.collapsed)) { if (showDelay < 1) { toolbar.collapsed = false; lock(); return; } toolbar.waiting = true; window.setTimeout(function() { if (distance >= distanceShow) { toolbar.waiting = false; return; } toolbar.collapsed = false; lock(); toolbar.waiting = false; }, showDelay); } if ((distance >= distanceHide) && (!toolbar.collapsed)) { toolbar.collapsed = true; lock(); } } function removeListeners() { gNavToolbox.removeEventListener("beforecustomization", beforeCustomize, false); gNavToolbox.removeEventListener("customizationchange", customizationChange, false); gNavToolbox.removeEventListener("aftercustomization", afterCustomize, false); } this.onclick = function(e) { if (e.button) return; var autohide = toolbar.hasAttribute("autohide"); toolbar.collapsed = autohide; if (!autohide) { browser.removeEventListener("mousemove", collapser, false); toolbar.setAttribute("autohide", "true"); } else { browser.addEventListener("mousemove", collapser, false); toolbar.removeAttribute("autohide"); } lock(); } toolbar.ondblclick = function(e) { if ( e.button || e.target.nodeName == "toolbarbutton" || e.target.nodeName == "toolbaritem" ) return; button.click(); } // .................................................................................................... if (!toolbar.hasAttribute("autohide")) { browser.addEventListener("mousemove", collapser, false); } else toolbar.setAttribute("autohide", "true"); lock(); gNavToolbox.addEventListener("beforecustomization", beforeCustomize, false); gNavToolbox.addEventListener("customizationchange", customizationChange, false); gNavToolbox.addEventListener("aftercustomization", afterCustomize, false); // .................................................................................................... var observer = { get obs() { return Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); }, init: function() { this.obs.addObserver(this, "lightweight-theme-styling-update", false); this.observe(); }, destroy: function() { try { this.obs.removeObserver(this, "lightweight-theme-styling-update"); } catch(ex) {} }, observe: function(subject, topc, data) { setTimeout(function() { var win = document.getElementById("main-window"); var bgi = window.getComputedStyle(win).backgroundImage; if (bgi == "none") { var bgc = window.getComputedStyle(win).backgroundColor; toolbar.style.backgroundColor = bgc; var brc = bgc; bgc.match(/\d+/g).forEach(function(color, i) { if (i > 2) return; brc = brc.replace(color, Math.round(color/1.5)); }); toolbar.style.borderRightColor = brc; return; } var url = bgi.replace('url("', "").replace('")', ""); const xhtml = "http://www.w3.org/1999/xhtml"; var img = document.createElementNS(xhtml, "img"); var canvas = document.createElementNS(xhtml, "canvas"); img.src = url; img.onload = function() { var width = canvas.width = img.width; var height = canvas.height = img.height; var context = canvas.getContext("2d"); context.drawImage(img, 0, 0); var arr = context.getImageData(0, 0, width, height).data; var r = 0, g = 0, b = 0; var len = arr.length; for (var i = 0; i < len; i += 4) { r += arr[i]; g += arr[i + 1]; b += arr[i + 2]; } var colors = [r, g, b], borderRightColors = []; colors.forEach(function(color, i) { var clr = Math.round(4 * color / len); colors[i] = clr; borderRightColors.push(Math.round(clr /1.5)); }); var rgb = "rgb(" + colors.join(", ") + ")"; var rgbBrc = "rgb(" + borderRightColors.join(", ") + ")"; toolbar.style.backgroundColor = rgb; toolbar.style.borderRightColor = rgbBrc; } }, 200); } }; observer.init(); function n(id) document.getElementById(id); const page = n("content"), box = n("sidebar-box"), sidebar = n("sidebar"); var tvtc, timeout; function listenMO(node, listen) { var func = node == box ? onBMO : onPMO; (listen ? addEventListener : removeEventListener) .apply(this, ["mouseover", func, false, node]); } function onPMO() { listenMO(page, false); timeout = setTimeout(hideSB, autoCloseDelay ); listenMO(box, true); } function onBMO() { listenMO(box, false); clearTimeout(timeout); listenMO(page, true); } function hideSB() { listenMO(box, false); if (box.hidden) return; var id = box.getAttribute("sidebarcommand") || "viewBookmarksSidebar"; n(id).setAttribute("checked", true); toggleSidebar(id); } function onSBL() { var time = Date.now(); listenMO(page, false); if (time - tvtc < 800) listenMO(page, true); } function onVTC(e) { var time = Date.now(); for (var node = e.target; node; node = node.parentNode) { if (node != toolbar) continue; tvtc = time; break; } } function ael(add) { [ ["DOMContentLoaded", onSBL, false, sidebar], ["click", onVTC, false, window], ["command", onVTC, false, window] ].forEach(function(args) { (add ? addEventListener : removeEventListener).apply(this, args); }); } if ( sideBarAutoClose ) ael(true); this.onDestroy = function(reason) { observer.destroy(); browser.removeEventListener("mousemove", collapser, false); if (!toolbar.hasAttribute("customizing")) removeListeners(); if (reason == "delete") pref.reset(); if (!getAttr_pref()) return; setAttr_pref(); ael(false); };
На форуме
toolbargrippy { display: none !important; }
Спасибо, обновил свой css файл
Добавлено 21-08-2015 19:44:19
Подскажите, в консоли ошибок появляется следующее:
Метка времени: 21.08.2015 21:38:14 Ошибка: DEPRECATION WARNING: Passing a callback to Livermarks methods is deprecated. Please use the returned promise instead. You may find more details about this deprecation at: https://developer.mozilla.org/docs/Mozilla/JavaScript_code_modules/Promise.jsm resource://gre/components/nsLivemarkService.js 371 LS_getLivemark chrome://communicator/content/places/browserPlacesViews.js 939 PT__insertNewItem chrome://communicator/content/places/browserPlacesViews.js 901 PT__rebuild chrome://communicator/content/places/browserPlacesViews.js 1247 PT_invalidateContainer chrome://communicator/content/places/browserPlacesViews.js 655 PVB_containerStateChanged chrome://communicator/content/places/browserPlacesViews.js 75 PlacesViewBase.prototype.result chrome://communicator/content/places/browserPlacesViews.js 49 PlacesViewBase.prototype.place chrome://communicator/content/places/browserPlacesViews.js 13 PlacesViewBase chrome://communicator/content/places/browserPlacesViews.js 857 PlacesToolbar chrome://communicator/content/bookmarks/browser-places.js 848 PTH_init chrome://navigator/content/navigator.js 664 Startup chrome://navigator/content/navigator.xul 1 onload null 0 null Источник: resource://gre/modules/Deprecated.jsm Строка: 79
Это нормально или нужно что-то делать?
Отредактировано fokanik (21-08-2015 19:44:19)
Отсутствует
То панель приобретёт нормальный вид без лишнией вертикальной полоски. Но хотелось бы и сохранить функционал сворачивалок панелей и добиться приемливого вида Vertical Toolbar. Можно-ли прятать сворачивалки при открытии тулбара и восстанавливать их при его исчезновении ? Или для этого нужна перезагрузка как в случае с CSS кодом ?
Если возможно - прошу умельцев помочь. Спасибо.
Может используй:
или
Отсутствует
Может используй:
bunda1, спасибо. Я не смог вчера ответить. Убрал полоску с вертикальной панели кодом в CSS
Спасибо, обновил свой css файл
А можно не убирать совсем, а сделать компактнее, типа того :
На форуме
Как добавить обработку ctrl+ЛКМ:
addEventListener("click", function(e) { if (e.button == 1) { e.preventDefault(); e.stopPropagation(); gContextMenu.openLinkInTab(); setTimeout(function() { document.getElementById("contentAreaContextMenu").hidePopup() }, 20); } }, true, document.getElementById("context-openlinkincurrent"));
Пробовал добавить, но не получилось:
addEventListener("click", function(e) { if (e.button == 1 || e.button == 0 && !e.ctrlKey) { e.preventDefault(); e.stopPropagation(); gContextMenu.openLinkInTab(); setTimeout(function() { document.getElementById("contentAreaContextMenu").hidePopup() }, 20); } }, true, document.getElementById("context-openlinkincurrent"));
Отсутствует
Как сделать простенький счётчик найденных совпадений слов на странице?
Я делаю
function get_text(el) { ret = ""; var length = el.childNodes.length; for(var i = 0; i < length; i++) { var node = el.childNodes[i]; if(node.nodeType != 8) { ret += node.nodeType != 1 ? node.nodeValue : get_text(node); } } return ret; } var words = get_text(content.document.body); var word = "my_word"; var count = words.split(word).length-1;
И пробовал другие способы. Но они все находят бОльшее кол-во совпадений, чем видно глазом и чем считает счётчик для кнопки Find от Infocatcher.
Не всегда. На некоторых страницах бывает показывают правильно. Наверно считают и невидимые слова.
*******************
Как добавить обработку ctrl+ЛКМ:
А если попробовать
Отредактировано rbfyec (23-08-2015 11:18:25)
Отсутствует
function get_text(el)
get_text(el) возвращает нечто напоминающее el.textContent
Наверно считают и невидимые слова.
Ну, так отфильтруй то, что сочтёшь ненужным, типа
function get_text(el) { var result = ""; for(var node = el.firstChild; node; node = node.nextSibling) { if ( node.nodeType == node.ELEMENT_NODE && node.scrollWidth && node.scrollHeight && node.nodeName != "SELECT" ) result += get_text(node); else if (node.nodeType == node.TEXT_NODE) result += node.nodeValue; } return result; }
addEventListener("mouseup", e => { if (e.button == 1 || e.button == 0 && e.ctrlKey) { e.preventDefault(); gContextMenu.openLinkInTab(); e.target.parentNode.hidePopup(); } }, false, document.getElementById("context-openlinkincurrent"));
Отсутствует
Как сделать, чтобы, если ссылка имеет псевдокласс :hover посылался xmlhttprequest, а по событию click на этой же ссылке:
=== Если уже получен ответ на xmlhttprequest, с этим ответом выполняется определеное действие
=== Если к моменту клика ответ еще не получен, ждем пока придет ответ и делаем с ним это самое действие
Отсутствует
Ну как же сделать?
https://forum.mozilla-russia.org/viewto … 77#p692477
Отредактировано hartumov (28-08-2015 19:05:11)
Отсутствует
Кнопка - Master Edit Button в SeaMonkey не работает, можно поправить - код (инициализация):
/*Initialization Code*/ var data = <window title={this.label} onload={"opener.document.getElementById(\"" + this.id + "\").load()"} xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <keyset> <key keycode="VK_ESCAPE" oncommand="close()"/> </keyset> <vbox flex="1"> <listbox id="listbox" flex="1"> <listhead> <listheader label="Id" width="200"/> <listheader label="Label"/> </listhead> <listcols> <listcol/> <listcol flex="1"/> </listcols> </listbox> <hbox> <button label="Edit" oncommand={"opener.document.getElementById(\"" + this.id + "\").edit()"}/> </hbox> </vbox> </window>; var bool = XML.prettyPrinting; XML.prettyPrinting = false; data = '<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?>' + data.toXMLString(); XML.prettyPrinting = bool; var dialog; this.leftclick = function(event) { var url = "data:application/vnd.mozilla.xul+xml;text/plain," + data; var feature = "chrome,centerscreen,width=500,height=600,dialog=no"; dialog = window.openDialog(url, "", feature); } this.midclick = function(event) { var os = Components.classes["@mozilla.org/observer-service;1"]. getService(Components.interfaces.nsIObserverService); var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]. createInstance(Components.interfaces.nsISupportsPRBool); os.notifyObservers(cancelQuit, "quit-application-requested", "restart"); if (cancelQuit.data) { alert("Abort Restart Process"); } else { var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]. getService(Components.interfaces.nsIAppStartup); appStartup.quit(appStartup.eAttemptQuit | appStartup.eRestart); } } this.load = function() { var nodeList = document.getElementsByTagName("toolbarbutton"); for (var i = 0; i < nodeList.length; i++) { if (nodeList[i].id.search("custombuttons-button") == 0) { var item = document.createElement("listitem"); var cell = document.createElement("listcell"); cell.setAttribute("label", nodeList[i].id); item.appendChild(cell); var cell = document.createElement("listcell"); cell.setAttribute("label", nodeList[i].label); item.appendChild(cell); dialog.document.getElementById("listbox").appendChild(item); } } dialog.document.getElementById("listbox").focus(); dialog.document.getElementById("listbox").selectAll(); } this.edit = function() { var label = dialog.document.getElementById("listbox").selectedItem.firstChild.getAttribute("label"); dialog.close(); custombuttons.editButton(document.getElementById(label)); } this.setAttribute("onclick", "custombuttons.gQuot.mHandler(event, this)");
А может аналог есть?
Отсутствует
bunda1, а можно тут сделать, так:
- Я создаю на рабочем столе скрытый файл - TextToEditor.txt
- Потом работает код
- И когда известно, что имя файла нужно изменить - файл сохраняется уже не скрытым (проверено через сохранить как ...)
Только код - скрытый файл не подхватывает почему-то:
/* Функция создаст текстовой файл в папке custombuttons в папке профиля и запишет в файл выделенный текст и откроет файл в редакторе ...............................*/ function textToEditor() { var sel = getSelect(); // фильтр .... if ( !sel ) { Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService) .showAlertNotification("chrome://global/skin/icons/error-16.png", "Text To Editor", "Выделите или скопируйте текст!", false, "", null, ""); return; } // получить выделенный текст в UTF-8 var text = convertFromUnicode("UTF-8", sel ); // устанавить путь к файлу и записать текст .... var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); var file = Services.dirsvc.get('Desk', Ci.nsIFile); file.append("Text To Editor.txt"); foStream.init(file, 0x02|0x08|0x20, 0666, 0); foStream.write(text, text.length); foStream.close(); file.launch(); }; textToEditor(); /* Функция отдаст выделенный текст из страницы или текстового поля, если текст не выделен отдаст 'false' .......................................................*/ function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection(); var anchor = (selection.anchorNode !== null)? selection.anchorNode: false; // выделенный текст из 'PRE' .... if ( anchor && anchor.parentNode.tagName == 'PRE' ) { var node = selection.focusNode; var startPos = selection.anchorOffset; var endPos = selection.focusOffset; var selection = node.data.substring(startPos, endPos); } // выделенный текст из текстового поля .... if ( selection.toString().length == 0 ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } } // исправляем проблему с переносом текста новую строку в стандартном win блокноте .... if ( selection.toString().length !== 0 ) { var selection = selection.toString(); var selection = selection.replace(/\u000A/g, "\u000D\u000A"); var selection = selection.replace(/\u000D\u000D\u000A/g, "\u000D\u000A"); } return ( selection == '')? false: selection; };
Отсутствует
Такую функцию использует Seamonkey для удаления спама, сделал кнопку - но эта функция работает во всех активных папках (входящие, спам, удаленные), а вдруг, случайно, что-то лишнее удалю - как исправить?
Отсутствует