Да, в сниппетах для получения адреса страницы предлагается использовать:
getBrowser().currentURI.spec a почему не getBrowser().contentWindow.location - какие-то проблемы?
Ну для получения адреса страницы сущствует много вариантов, и наверно автор сниппета выложил свой любимый или более универсальный. Кстати можно и так:
alert(content.location);
alert(gBrowser.currentURI.spec);
alert(content.document.location);
или даже:
alert(gURLBar.value);
Отсутствует
Dumby
Насчёт кнопки Настройки.
Спасибо за if (node == "textbox" || node == "filefield") return;
я не подумал об этом, потому что сам для выделения слова и строки двойной клик не использую. Кстати добавил node == "richlistitem"
Интересно то что твой win.ondblclick при повторном нажатие кнопки не добавляется повторно а вот preferences.addEventListener("dblclick",... добавляется без конечно. В общем твой вариант лучше.
С кнопкой VT проблема - на FF16 получается слишком широкая
вертикальная панель, ни как не могу найти нужный Css код и уменьшить ширину.
Отредактировано bunda1 (05-11-2012 14:52:37)
Отсутствует
bunda1
Угу, alert(getBrowser().contentWindow===content) -> true. Будем использовать его. Продолжу знакомиться с предметом:
Allow context menu - На некоторых сайтах заблокировано контекстное меню или копирование текста, или даже нельзя закрыть страницу. Эта кнопка решает подобные проблемы.
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%3EAllow%20context%20menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACHElEQVR4AZXBT0hTARwH8N+b/yCXeSiYeGh0cYQQBE5UaOFpUw8mXrooKIiSKJtuOQcbW2ksWHP0TDSnBp1Mx0BiQWMN3J/3hnO9ScyYGmoGgiShjJbDb5eCCLPt86HfDg93SxYXX7QbDPety8tCMeXq9PS4eGnpwRO5XAS1Wu/g+Z18ylUy+byvq4tQVVUAo9Fq5fldhnKxtjajXlgQwWQiVFdfgMViN/P8dh5lSxCcmnCYQTRK6Okh1NSIYTY/fhQKbRdSNjjOqQmFGBwcEKamCB0dhLq6QlgstofB4Kd8+p9AwKnx+RhkMoRwmOBwEIaGCEqlGDabzRKLbRXReYJBp8bjYQAQUimCXk/Qagnd3YSKCkJvr3qC59+XxeOCiM7CcTOaSIRBOk2YnSVUVhIkEhHq68sgk13KSKXS7xMT0/c2NjZK6Szr69Nqj4dgNBKam6+BZQkqFYO2Nt0Pt/td++QkK+e4kDQaXc2nvwGpvFjMpmtoIDQ2tn50udymnZ3LKZeLUFsrT3u9m9fpPOn015K5uVFWobhxwrK+W8nksVgQ2jZXVhi0thIGBoyOQGDrIv3L3t5WAceFb3u94Tv0Szz+eiASkZzMzxNaWmTfRkZeKigXicSHq37/3c9+P6Gzk9Dfr50ZH38loWzt72/nJRJvDcPDV1BeTlAqVZs63ehNysXR0Zciu/3Z06am9jeDg/q+sbGxUvrDT/sZDTsp21mGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%28function%28w%29%7B%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20%5B%27contextmenu%27%2C%27copy%27%2C%27cut%27%2C%27paste%27%2C%27mousedown%27%2C%27mouseup%27%2C%27beforeunload%27%2C%27beforeprint%27%5D%3B%0A%20%20%20%20%20%20%20%20for%28var%20i%20%3D%200%2C%20x%3B%20x%20%3D%20arr%5Bi%5D%3B%20i++%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%28w%5B%27on%27%20+%20x%5D%29w%5B%27on%27%20+%20x%5D%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20w.addEventListener%28x%2C%20function%28e%29%7Be.stopPropagation%28%29%7D%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20for%28var%20j%20%3D%200%2C%20f%3B%20f%20%3D%20w.frames%5Bj%5D%3B%20j++%29%7Btry%7Barguments.callee%28f%29%7Dcatch%28e%29%7B%7D%7D%0A%7D%29%28content%29%3B%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
Ещё заметил, что при исправлении, ты написал this.close();
Пока preferences.addEventListener - всё нормально, а если кто заменит на gBrowser.addEventListener,
так работать не будет (ключевое слово this тогда будет указывать на tabbrowser)
А ещё ты не указал в описании кнопки, что она открывает Настройки
как немодальное окно независимо от
browser.preferences.inContent и browser.preferences.instantApply.
Я думаю - это главное приемущество кнопки.
Отредактировано Dumby (05-11-2012 19:23:46)
Отсутствует
Спасибо я исправил this.close(); и toolbar.setAttribute("_width", toolbar.boxObject.width + 4); тоже помог.
И насчет Настройки как не модальное окно тоже написал.
Отредактировано bunda1 (05-11-2012 21:00:40)
Отсутствует
Где тут была кнопка для загрузки файлов на Загрузки | Форум Mozilla Россия
Отсутствует
Может кто это починить. Когда использую с Mouseover Popup Image Viewer, то частенько на рутрекере например, появляется ошибка:
[Mouseover Popup Image Viewer] Error: Permission denied to access property 'querySelector'
На гугл картинках ошибки нет.
Еще консоль пишет:
Метка времени: 07.11.2012 22:44:16 Ошибка: Показ объектов chrome JS содержимому без __exposedProps__ является небезопасным и устаревшим. Для получения большей информации прочтите https://developer.mozilla.org/en/XPConnect_wrappers Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button0@init Строка: 1007
Метка времени: 07.11.2012 22:44:14 Ошибка: Показ объектов chrome JS содержимому без __exposedProps__ является небезопасным и устаревшим. Для получения большей информации прочтите https://developer.mozilla.org/en/XPConnect_wrappers Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button0@init Строка: 1031
Не уверен относиться ли к данной кнопке, так как на практике консоль источник указывает неверно, т.е. всегда chrome:/ /custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button0@init
Отредактировано Kamui (07-11-2012 18:46:24)
Отсутствует
Может кто это починить. Когда использую с Mouseover Popup Image Viewer, то частенько на рутрекере например, появляется ошибка:Выделить кодКод:[Mouseover Popup Image Viewer] Error: Permission denied to access property 'querySelector'На гугл картинках ошибки нет.Еще консоль пишет:Выделить кодКод:Метка времени: 07.11.2012 22:44:16
Ошибка: Показ объектов chrome JS содержимому без __exposedProps__ является небезопасным и устаревшим. Для получения большей информации прочтите https://developer.mozilla.org/en/XPConnect_wrappers
Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button0@init
Строка: 1007Выделить кодКод:Метка времени: 07.11.2012 22:44:14
Ошибка: Показ объектов chrome JS содержимому без __exposedProps__ является небезопасным и устаревшим. Для получения большей информации прочтите https://developer.mozilla.org/en/XPConnect_wrappers
Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button0@init
Строка: 1031Не уверен относиться ли к данной кнопке, так как на практике консоль источник указывает неверно, т.е. всегда chrome:/ /custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button0@init
Отредактировано Kamui (Вчера 16:46:24)
А если обновиться со страницы автора скрипта? UserScriptLoader 0.1.7.9
// @note 0.1.7.9 __exposedProps__ Я положил
Добавлено 08-11-2012 12:12:41
Где тут была кнопка для загрузки файлов на Загрузки | Форум Mozilla Россия
Отредактировано lokiju (08-11-2012 12:12:41)
Отсутствует
lokiju
Благодарю, ошибка с __exposedProps__ исчезла, но Mouseover Popup Image Viewer тем не менее не работает например на рутрекере с первьюшками с радикала, хотя здесь превьюшки с радикала работают. А вот например превьюшки с itmages на этом форуме не работают. Ошибка везде одна:
[Mouseover Popup Image Viewer] Error: Permission denied to access property 'querySelector'
И кстати кто автор оригинала UserScriptLoader'a? Я например брал у ardiman'а.
Отсутствует
И кстати кто автор оригинала UserScriptLoader'a? Я например брал у ardiman'а.
А если обновиться со страницы автора скрипта? UserScriptLoader 0.1.7.9
Griever[/url]]
// ==UserScript==
// @name UserScriptLoader.uc.js
// @description Greasemonkey っぽいもの
// @namespace http://d.hatena.ne.jp/Griever/
// @include main
// @compatibility Firefox 5.0
// @license MIT License
// @version 0.1.7.9
// ==UserScript==
// @name UserScriptLoader.uc.js
// @description Greasemonkey っぽいもの
// @namespace http://d.hatena.ne.jp/Griever/
// @include main
// @compatibility Firefox 5.0
// @license MIT License
// @version 0.1.7.8
Скоро ardiman заменит английский в скрипте на немецкий и у него будет version 0.1.7.9
Отсутствует
Отсутствует
voqabuhe у меня показывает только MB без цифр. вы проверили код который я писал?
А чего проверять, если я пользуюсь этой кнопкой [CB]Memory Monitor
Отсутствует
Кнопка сохраняет снапшот (текущее состояние) страницы или выделения в html.
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%3ESave%20snapshot%20to%20html%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaUlEQVR4AX3BTWvcVRTA4d+592am/5lp0qSxtEtRxI0oVmipuBFEEDfd1IUvCz+RO3du/QAqCgUjxULdWKFV8AUkapg0pplM5uX/cu85x7RQlDb4PPL62++8ubq68cLZjXPnY2hnKYk4JxMgZ/fpvHe6bo72tr745OO0trb+4pVLb1x7/92rFzfXIQr/a1kbX34T2Lrx2d350Uefpq4znc6y/b0Ho8oZVII5J4oC81qZTAL1YhmAXnK12LUqB1O40Br9fkQLT3DAIjQNLBsw1wBIKmahbkucTKFtjdxFioI7T4gRcnG0tJgVASSVUmKXS6hrJXeQC+QC5iD8h0NaAS2Cu6FFAxCCqkZVDWYKIjwiPEZ4SBzMCmo5AJJULWIau7ZlZ6zMZhV1q5g5j0sxcP+gpl4qZhqAmLTkBBbNnZvfjTk8zBxMWprWcAd3HhJxhoNEVSWGowsE0QBI6nIOajnEFEkp8Orl8wxHQ4QCKCJOjByL/PLbnB/u7DIYRFRLAELKucSmzuHPnTmT/TFX33qK61vbLGp479qzbG70eGR9NXHj258Yjc7h5gEIIecS6yaHxaJlWS9ZLjPf3x5z89Yuh9PMA/cnsLsPh9NMFMetYFYCEII7vRh7vapaReQUm2d6fPjBZV678hxrp3s80O9DFJBwin5/QFWtEWMvATGpFp8e3bOd8W0O9u/w1deZiy8/zysvLfj19xk//mzMF4W2c7b/2NPtv+52Kk11eHSPYyKD1bOXzMozpbRPSwjkpgiChJWAZ8UViBwTQSSnldjgVsXUm5Wm+Vz41xDoAwIETuaAAy3QAf4PtuhVEPpvXZEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20getSelWin%20%3D%20function%20%28w%29%20%7B%0A%09if%20%28w.getSelection%28%29.toString%28%29%29%20return%20w%3B%0A%09for%20%28var%20i%20%3D%200%2C%20f%2C%20r%3B%20f%20%3D%20w.frames%5Bi%5D%3B%20i++%29%20%7B%0A%09%09try%20%7B%0A%09%09%09if%20%28r%20%3D%20arguments.callee%28f%29%29%20return%20r%0A%09%09%7D%20catch%28e%29%20%7B%7D%0A%09%7D%0A%7D%3B%0Avar%20ele%2C%20pEle%2C%20clone%2C%20win%20%3D%20content%3B%0Avar%20doc%20%3D%20win.document%2C%20loc%20%3D%20win.location%3B%0Avar%20selWin%20%3D%20getSelWin%28win%29%3B%0Aif%20%28selWin%29%20%7B%0A%09var%20rng%20%3D%20selWin.getSelection%28%29.getRangeAt%280%29%3B%0A%09pEle%20%3D%20rng.commonAncestorContainer%3B%0A%09ele%20%3D%20rng.cloneContents%28%29%3B%0A%09doc%20%3D%20selWin.document%3B%0A%09loc%20%3D%20selWin.location%0A%7D%20else%20%7B%0A%09pEle%20%3D%20doc.documentElement%3B%0A%09ele%20%3D%20%28doc.body%20%7C%7C%20doc.getElementsByTagName%28%27body%27%29%5B0%5D%29.cloneNode%28true%29%0A%7D%3B%0Awhile%20%28pEle%29%20%7B%0A%09if%20%28pEle.nodeType%20%3D%3D%201%29%20%7B%0A%09%09clone%20%3D%20pEle.cloneNode%28false%29%3B%0A%09%09clone.appendChild%28ele%29%3B%0A%09%09ele%20%3D%20clone%0A%09%7D%3B%0A%09pEle%20%3D%20pEle.parentNode%0A%7D%3B%0Avar%20sel%20%3D%20doc.createElement%28%27div%27%29%3B%0Asel.appendChild%28ele%29%3B%0A%0Avar%20scripts%20%3D%20sel.getElementsByTagName%28%27script%27%29%3B%0Afor%20%28var%20i%20%3D%20scripts.length%3B%20i--%3B%29%20%7B%0A%09scripts%5Bi%5D.parentNode.removeChild%28scripts%5Bi%5D%29%0A%7D%3B%0Avar%20head%20%3D%20ele.insertBefore%28doc.createElement%28%27head%27%29%2C%20ele.firstChild%29%3B%0Avar%20meta%20%3D%20doc.createElement%28%27meta%27%29%3B%0Ameta.httpEquiv%20%3D%20%27content-type%27%3B%0Ameta.content%20%3D%20%27text/html%3B%20charset%3Dutf-8%27%3B%0Ahead.appendChild%28meta%29%3B%0Avar%20tEle%20%3D%20doc.getElementsByTagName%28%27title%27%29%5B0%5D%3B%0Aif%20%28tEle%29%20head.appendChild%28tEle.cloneNode%28true%29%29%3B%0Aif%20%28loc.protocol%20%21%3D%20%27data%3A%27%29%20%7B%0A%09var%20bEle%20%3D%20doc.getElementsByTagName%28%27base%27%29%5B0%5D%3B%0A%09var%20base%20%3D%20bEle%20%3F%20bEle.cloneNode%28false%29%20%3A%20doc.createElement%28%27base%27%29%3B%0A%09if%20%28%21base.getAttribute%28%27href%27%29%29%20base.href%20%3D%20loc.href%3B%0A%09head.appendChild%28base%29%0A%7D%3B%0Ahead.copyStyle%20%3D%20function%20%28s%29%20%7B%0A%20%20%20%20if%20%28%21s%29%20return%3B%0A%09var%20style%20%3D%20doc.createElement%28%27style%27%29%3B%0A%09style.type%20%3D%20%27text/css%27%3B%0A%09if%20%28s.media%20%26%26%20s.media.mediaText%29%20style.media%20%3D%20s.media.mediaText%3B%0A%09try%20%7B%0A%09%09for%20%28var%20i%20%3D%200%2C%20rule%3B%20rule%20%3D%20s.cssRules%5Bi%5D%3B%20i++%29%20%7B%0A%09%09%09if%20%28rule.type%20%21%3D%203%29%20%7B%0A%09%09%09%09style.appendChild%28doc.createTextNode%28rule.cssText%20+%20%27%5Cn%27%29%29%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09this.copyStyle%28rule.styleSheet%29%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20catch%28e%29%20%7B%0A%09%09if%20%28s.ownerNode%29%20style%20%3D%20s.ownerNode.cloneNode%28false%29%0A%09%7D%3B%0A%09this.appendChild%28style%29%0A%7D%3B%0Avar%20sheets%20%3D%20doc.styleSheets%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20sheets.length%3B%20i++%29%20head.copyStyle%28sheets%5Bi%5D%29%3B%0A%0Avar%20doctype%20%3D%20%27%27%2C%20dt%20%3D%20doc.doctype%3B%0Aif%20%28dt%20%26%26%20dt.name%29%20%7B%0A%09doctype%20+%3D%20%27%3C%21DOCTYPE%20%27%20+%20dt.name%3B%0A%09if%20%28dt.publicId%29%20doctype%20+%3D%20%27%20PUBLIC%20%5Cx22%27%20+%20dt.publicId%20+%20%27%5Cx22%27%3B%0A%09if%20%28dt.systemId%29%20doctype%20+%3D%20%27%20%5Cx22%27%20+%20dt.systemId%20+%20%27%5Cx22%27%3B%0A%09doctype%20+%3D%20%27%3E%5Cn%27%0A%7D%3B%0Avar%20fileName%20%3D%20selWin%20%3F%20selWin.getSelection%28%29.toString%28%29%20%3A%20%28tEle%20%26%26%20tEle.text%20%3F%20tEle.text%20%3A%20loc.pathname.split%28%27/%27%29.pop%28%29%29%3B%0AfileName%20%3D%20fileName.replace%28/%5B%3A%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%27_%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29.slice%280%2C%20100%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%27%27%29%3B%0Aif%28%21/%5C.html%3F%24/.test%28fileName%29%29fileName%20+%3D%20%27.html%27%3B%0A%0AsaveURL%28%27data%3Atext/html%3Bcharset%3Dutf-8%2C%27%20+%20encodeURIComponent%28doctype%20+%20sel.innerHTML%20+%20%27%5Cn%3C%21--%20This%20document%20saved%20from%20%27%20+%20%28loc.protocol%20%21%3D%20%27data%3A%27%20%3F%20loc.href%20%3A%20%27data%3Auri%27%29%20+%20%27%20--%3E%27%29%2C%20fileName%2C%20null%2C%20false%2C%20false%2C%20null%2C%20doc%29%0A%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
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%3ECopy%20links%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkBJREFUeJydku1Lk1EYxp8/p28F9a36EGESUguliHBIyOYLKM7yZQ3LNF8oZaZirdwsl6JO02nLdG463WaaL1tZGmhqWGYzBCFwzxa/tkccbYw+eODicO7rvq/7Ovc5AiDEovzFD66Ur5KkWYmguPk71tldYnOjDrpXPuT1Izx06yifTiXPmcLAdiFqlwydbYHC5k1yG9eJK1DTtYlC30bXtwLqF+XkuvPJGEvlpjMBo6eT91+DOBaDFLdskVW3SpRAt2Mb+SMDz1cz6d5USfvdGRmTYiX51lQsSy7m1/YFqu0dZBv1ESeSQFJxyJ4tnZYvSjo2cjD7Chja0WDbvY3WXcvHjT9MLQexfghwZ/iJ5PBiRe++gGVym8tVU6jd58kaOUXrWibG9Wxy7IkUTlxAM5orFY9+CtA/F6DNJZLRW8K1RgsVxjUEbdc6yoZlZN1HSDGdpmkpjSJXIs+mnZTZayRn4c4D8wE634roHSLaN34K2n9z6ZYHQXl/AZXBR5nFQ5M9NAtzAhnWk5hnA/TM/OKp08vLdwHa3SKGUHHDsJ/rphIUg2c5nu5CSK/ykqX7SWX/HnVDfsoGxyU3D2wTkl2jU6RlXERn90t8Ud84eWNnqPVe5WiaA6G69TPJ91bQmPYo7fORbDoRmowQhXBhbOzGawXJ6imEntENzqk90p0OyNj1n9j+Mx6TD6Hq3IkkxnaLh0heeG82L5NUOhdFxOscj498ZZV25vAODlDyeP5wM/gXTs9WvG5CvFgYfwFzo6tZMWWyMgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20win%20%3D%20content%2C%20doc%20%3D%20win.document%3B%0Avar%20sel%20%3D%20doc%2C%20winSel%20%3D%20win.getSelection%28%29%3B%0Aif%28winSel.toString%28%29%29%7B%0A%09sel%20%3D%20doc.createElement%28%27div%27%29%3B%0A%09sel.appendChild%28winSel.getRangeAt%280%29.cloneContents%28%29%29%3B%0A%7D%3B%0Avar%20str%20%3D%20%27%27%2C%20links%20%3D%20sel.getElementsByTagName%28%27a%27%29%3B%0Afor%28var%20i%20%3D%200%2C%20lnk%3B%20lnk%20%3D%20links%5Bi%5D%3B%20i++%29%7Bif%28lnk.href%29str%20+%3D%20lnk.href%20+%20%27%5Cr%5Cn%27%7D%3B%0AgClipboard.write%28str%29%3B%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
var docTitle = docTitle.replace(/"/g, " "). replace(/\*/g, " "). replace(/\//g, " "). replace(/:/g, " "). replace(/</g, " "). replace(/>/g, " "). replace(/\?/g, " "). replace(/\\/g, " "). replace(/\|/g, " ");
Это можно сделать быстрее и одной строчкой.
Отредактировано Lex1 (11-11-2012 20:06:36)
Отсутствует
Lex1
Ок, спасибо. Это ценное замечание.
function copyToClipboard(s) { const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(s); };
Это тоже можно сделать одной строчкой:
Отредактировано bunda1 (11-11-2012 03:07:32)
Отсутствует
Dumby
Сохранение с картинками:
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%3ESave%20snapshot%20to%20html%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaUlEQVR4AX3BTWvcVRTA4d+592am/5lp0qSxtEtRxI0oVmipuBFEEDfd1IUvCz+RO3du/QAqCgUjxULdWKFV8AUkapg0pplM5uX/cu85x7RQlDb4PPL62++8ubq68cLZjXPnY2hnKYk4JxMgZ/fpvHe6bo72tr745OO0trb+4pVLb1x7/92rFzfXIQr/a1kbX34T2Lrx2d350Uefpq4znc6y/b0Ho8oZVII5J4oC81qZTAL1YhmAXnK12LUqB1O40Br9fkQLT3DAIjQNLBsw1wBIKmahbkucTKFtjdxFioI7T4gRcnG0tJgVASSVUmKXS6hrJXeQC+QC5iD8h0NaAS2Cu6FFAxCCqkZVDWYKIjwiPEZ4SBzMCmo5AJJULWIau7ZlZ6zMZhV1q5g5j0sxcP+gpl4qZhqAmLTkBBbNnZvfjTk8zBxMWprWcAd3HhJxhoNEVSWGowsE0QBI6nIOajnEFEkp8Orl8wxHQ4QCKCJOjByL/PLbnB/u7DIYRFRLAELKucSmzuHPnTmT/TFX33qK61vbLGp479qzbG70eGR9NXHj258Yjc7h5gEIIecS6yaHxaJlWS9ZLjPf3x5z89Yuh9PMA/cnsLsPh9NMFMetYFYCEII7vRh7vapaReQUm2d6fPjBZV678hxrp3s80O9DFJBwin5/QFWtEWMvATGpFp8e3bOd8W0O9u/w1deZiy8/zysvLfj19xk//mzMF4W2c7b/2NPtv+52Kk11eHSPYyKD1bOXzMozpbRPSwjkpgiChJWAZ8UViBwTQSSnldjgVsXUm5Wm+Vz41xDoAwIETuaAAy3QAf4PtuhVEPpvXZEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20imageToBase64%20%3D%20function%28image%29%7B%0A%20%20%20%20var%20doc%20%3D%20image.ownerDocument%3B%0A%20%20%20%20var%20canvas%20%3D%20doc.createElement%28%27canvas%27%29%3B%0A%20%20%20%20canvas.width%20%3D%20image.width%3B%0A%20%20%20%20canvas.height%20%3D%20image.height%3B%0A%20%20%20%20doc.body.appendChild%28canvas%29%3B%0A%0A%20%20%20%20var%20ctx%20%3D%20canvas.getContext%28%272d%27%29%3B%0A%20%20%20%20ctx.drawImage%28image%2C%200%2C%200%29%3B%0A%20%20%20%20var%20base64%20%3D%20canvas.toDataURL%28%27image/png%27%29%3B%0A%20%20%20%20doc.body.removeChild%28canvas%29%3B%0A%20%20%20%20return%20base64%3B%0A%7D%3B%0Avar%20getSelWin%20%3D%20function%20%28w%29%20%7B%0A%09if%20%28w.getSelection%28%29.toString%28%29%29%20return%20w%3B%0A%09for%20%28var%20i%20%3D%200%2C%20f%2C%20r%3B%20f%20%3D%20w.frames%5Bi%5D%3B%20i++%29%20%7B%0A%09%09try%20%7B%0A%09%09%09if%20%28r%20%3D%20arguments.callee%28f%29%29%20return%20r%0A%09%09%7D%20catch%28e%29%20%7B%7D%0A%09%7D%0A%7D%3B%0Avar%20ele%2C%20pEle%2C%20clone%2C%20win%20%3D%20content%3B%0Avar%20doc%20%3D%20win.document%2C%20loc%20%3D%20win.location%3B%0Avar%20selWin%20%3D%20getSelWin%28win%29%3B%0Aif%20%28selWin%29%20%7B%0A%09var%20rng%20%3D%20selWin.getSelection%28%29.getRangeAt%280%29%3B%0A%09pEle%20%3D%20rng.commonAncestorContainer%3B%0A%09ele%20%3D%20rng.cloneContents%28%29%3B%0A%09doc%20%3D%20selWin.document%3B%0A%09loc%20%3D%20selWin.location%0A%7D%20else%20%7B%0A%09pEle%20%3D%20doc.documentElement%3B%0A%09ele%20%3D%20%28doc.body%20%7C%7C%20doc.getElementsByTagName%28%27body%27%29%5B0%5D%29.cloneNode%28true%29%0A%7D%3B%0Awhile%20%28pEle%29%20%7B%0A%09if%20%28pEle.nodeType%20%3D%3D%201%29%20%7B%0A%09%09clone%20%3D%20pEle.cloneNode%28false%29%3B%0A%09%09clone.appendChild%28ele%29%3B%0A%09%09ele%20%3D%20clone%0A%09%7D%3B%0A%09pEle%20%3D%20pEle.parentNode%0A%7D%3B%0Avar%20sel%20%3D%20doc.createElement%28%27div%27%29%3B%0Asel.appendChild%28ele%29%3B%0A%0Avar%20scripts%20%3D%20sel.getElementsByTagName%28%27script%27%29%3B%0Afor%20%28var%20i%20%3D%20scripts.length%3B%20i--%3B%29%20%7B%0A%09scripts%5Bi%5D.parentNode.removeChild%28scripts%5Bi%5D%29%0A%7D%3B%0A%0Avar%20imgs%20%3D%20sel.getElementsByTagName%28%27img%27%29%3B%0Afor%28var%20i%20%3D%200%2C%20img%3B%20img%20%3D%20imgs%5Bi%5D%3B%20i++%29%7B%0A%09if%28img.complete%29%20try%7B%0A%09%09img.src%20%3D%20imageToBase64%28img%29%3B%0A%09%7Dcatch%28x%29%7B%7D%3B%0A%0A%7D%3B%0A%0Avar%20head%20%3D%20ele.insertBefore%28doc.createElement%28%27head%27%29%2C%20ele.firstChild%29%3B%0Avar%20meta%20%3D%20doc.createElement%28%27meta%27%29%3B%0Ameta.httpEquiv%20%3D%20%27content-type%27%3B%0Ameta.content%20%3D%20%27text/html%3B%20charset%3Dutf-8%27%3B%0Ahead.appendChild%28meta%29%3B%0Avar%20tEle%20%3D%20doc.getElementsByTagName%28%27title%27%29%5B0%5D%3B%0Aif%20%28tEle%29%20head.appendChild%28tEle.cloneNode%28true%29%29%3B%0Aif%20%28loc.protocol%20%21%3D%20%27data%3A%27%29%20%7B%0A%09var%20bEle%20%3D%20doc.getElementsByTagName%28%27base%27%29%5B0%5D%3B%0A%09var%20base%20%3D%20bEle%20%3F%20bEle.cloneNode%28false%29%20%3A%20doc.createElement%28%27base%27%29%3B%0A%09if%20%28%21base.getAttribute%28%27href%27%29%29%20base.href%20%3D%20loc.href%3B%0A%09head.appendChild%28base%29%0A%7D%3B%0Ahead.copyStyle%20%3D%20function%20%28s%29%20%7B%0A%20%20%20%20if%20%28%21s%29%20return%3B%0A%09var%20style%20%3D%20doc.createElement%28%27style%27%29%3B%0A%09style.type%20%3D%20%27text/css%27%3B%0A%09if%20%28s.media%20%26%26%20s.media.mediaText%29%20style.media%20%3D%20s.media.mediaText%3B%0A%09try%20%7B%0A%09%09for%20%28var%20i%20%3D%200%2C%20rule%3B%20rule%20%3D%20s.cssRules%5Bi%5D%3B%20i++%29%20%7B%0A%09%09%09if%20%28rule.type%20%21%3D%203%29%20%7B%0A%09%09%09%09style.appendChild%28doc.createTextNode%28rule.cssText%20+%20%27%5Cn%27%29%29%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09this.copyStyle%28rule.styleSheet%29%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20catch%28e%29%20%7B%0A%09%09if%20%28s.ownerNode%29%20style%20%3D%20s.ownerNode.cloneNode%28false%29%0A%09%7D%3B%0A%09this.appendChild%28style%29%0A%7D%3B%0Avar%20sheets%20%3D%20doc.styleSheets%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20sheets.length%3B%20i++%29%20head.copyStyle%28sheets%5Bi%5D%29%3B%0A%0Avar%20doctype%20%3D%20%27%27%2C%20dt%20%3D%20doc.doctype%3B%0Aif%20%28dt%20%26%26%20dt.name%29%20%7B%0A%09doctype%20+%3D%20%27%3C%21DOCTYPE%20%27%20+%20dt.name%3B%0A%09if%20%28dt.publicId%29%20doctype%20+%3D%20%27%20PUBLIC%20%5Cx22%27%20+%20dt.publicId%20+%20%27%5Cx22%27%3B%0A%09if%20%28dt.systemId%29%20doctype%20+%3D%20%27%20%5Cx22%27%20+%20dt.systemId%20+%20%27%5Cx22%27%3B%0A%09doctype%20+%3D%20%27%3E%5Cn%27%0A%7D%3B%0Avar%20fileName%20%3D%20selWin%20%3F%20selWin.getSelection%28%29.toString%28%29%20%3A%20%28tEle%20%26%26%20tEle.text%20%3F%20tEle.text%20%3A%20loc.pathname.split%28%27/%27%29.pop%28%29%29%3B%0AfileName%20%3D%20fileName.replace%28/%5B%3A%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%27_%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29.slice%280%2C%20100%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%27%27%29%3B%0Aif%28%21/%5C.html%3F%24/.test%28fileName%29%29fileName%20+%3D%20%27.html%27%3B%0A%0AsaveURL%28%27data%3Atext/html%3Bcharset%3Dutf-8%2C%27%20+%20encodeURIComponent%28doctype%20+%20sel.innerHTML%20+%20%27%5Cn%3C%21--%20This%20document%20saved%20from%20%27%20+%20%28loc.protocol%20%21%3D%20%27data%3A%27%20%3F%20loc.href%20%3A%20%27data%3Auri%27%29%20+%20%27%20--%3E%27%29%2C%20fileName%2C%20null%2C%20false%2C%20false%2C%20null%2C%20doc%29%0A%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
Добавлено 11-11-2012 23:21:59
bunda1
Спасибо.
Добавлено 11-11-2012 23:46:02
Что касается картинок. Если не нравится размер получаемого файла, можно заменить 'image/png' на
Jpeg прозрачность не поддерживает, а без этого будет плохо.
Отредактировано Lex1 (11-11-2012 23:46:02)
Отсутствует
Сохранение с картинками:
Ну ты силён, спасибо. Ты бы выкладывал свои кнопки в Готовые кнопки для Custom Buttons, чтобы не затерялись.
Отсутствует
Есть такая кнопка "Управление изображениями" http://forum.mozilla-russia.org/viewtopic.php?id=41987&p=1 пробовал сам удалить "загружать только с этого сайта", не выходит, для меня эта функция только лишний раз щелкать, что можно подправить чтобы осталось только "загружать" - "не загружать". Спасибо.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует