okkamas_knife
1.качни себе портабельную версию фф, поставь туда CB,DOM inspector ну и еще что может понадобиться и тестируй-экспериментируй с кнопками и кодом.
2. сделай кнопку которая делает бэкапы profile\custombuttons\buttonsoverlay.xul
3. (самый простой вариант использовать архиватор с ключами - там есть добавление даты-времени к имени файла, прописываешь всё в кнопке запуска приложения с параметрами и всё,если в код кинуть то запуск вручную если в инициализацию то при запуске будет создаваться)
1. Я просто проверяю на другом профиле, а DOM inspector стоит, только я не пойму как им делать трассировку, смотрел в инете... не нашел ничего, в WIKI тоже.
2. Сделал.
3. Сделал.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
okkamas_knife я часто встечаю нечто подобное
Вы мне как то дали код
И есть ли возможность, на уровне идеи, связать дополнение AutoCopy и метод ListBox, хотя я думаю что вряд ли, но мало ли...
Как я понимаю var file = Components.classes["@mozilla.org/file/directory_service;1"].... нужно искать на http://kb.mozillazine.org/Knowledge_Base, я прав?
Или тут https://developer.mozilla.org/en/Code_snippets ?
Отредактировано Indomito (14-07-2010 21:00:15)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Ещё один один вопрос.
Как вызвать функцию из кнопки которая (функция) находится в другой кнопке?
По идее все функции глобальны или же функции описанные в кнопке, скажем в области инициализации это методы кнопки?
Голову сломал.... )))
PS Если можно простой пример описания функции и её вызова.
Часть №1 Отвечает за предопределение лок. переменных и её вызов осуществляется из обработчика кнопок мыши в Части №2
/*Initialization Code*/ function lbMouse(){ var open="[b]", close="[/b]"; lb_BBCodePrim(open,close); }; function rbMouse(){ var open="[b]", close="[/b]", paste = readFromClipboard(); rb_BBCodePrim(open,paste,close); };
Часть №2 Обрабатывает события по нажатию на ЛКМ, СКМ и ПКМ, а так клав.модификатор+ПКМ для выхода в свойства кнопки.
//---------------------------------------- this.onclick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ lbMouse(); } else if(event.button == 1) { // Действие при клике СКМ } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов rbMouse(); } }; this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Блокируем контекстное меню при клике ПКМ без модификаторов event.preventDefault(); event.stopPropagation(); } };
Часть №3 Это действия (стандартные и многокрано повтояемые во многих кнопках) по обработке кнопок мыши.
function lb_BBCodePrim(open,close) { var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); text +=open+theBox.value.substring(startPos, endPos)+close; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; }; function mb_BBCodePrim(open,close) { }; function rb_BBCodePrim(open,paste,close) { if (paste.length == 0) { open +=close; } else { open +=paste+close; } var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selectionLen = endPos - startPos var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); var nHeight = theBox.scrollHeight - oHeight; text +=open; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; theBox.selectionStart = endPos + open.length; theBox.selectionEnd = endPos + open.length - selectionLen; theBox.scrollTop = oPosition + nHeight; }; //----------------------------------------
Задача: Упростить код, а точнее минимизировать в области текста, ибо Часть №1 может быть в Части №2, а Часть №3 вообще где то далеко..... По сути Часть №1 вообще то ненужна.
Отредактировано Indomito (15-07-2010 08:38:29)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Выдаёт
function open() {
[native code]
}function close() {
[native code]
}
А Коды такие:
Кнопка где описание:
bbBBCode=true // разрешить/включить BBCode
bbSizeText=1 // размер шрифта
//bbColorText= // цвет шрифта
//alert ("Custom Botton Done!");
//--------общие функции для BBCode
v_lb_BBCodePrim = function(){lb_BBCodePrim(open,close);}
v_mb_BBCodePrim = function(){mb_BBCodePrim(open,close);}
v_rb_BBCodePrim = function(){rb_BBCodePrim(open,paste,close);}
function lb_BBCodePrim(open,close) {
var theBox = document.commandDispatcher.focusedElement;
var startPos = theBox.selectionStart;
var endPos = theBox.selectionEnd;
var oPosition = theBox.scrollTop;
var oHeight = theBox.scrollHeight;
var text=theBox.value.substring(0,startPos);
text +=open+theBox.value.substring(startPos, endPos)+close;
text +=theBox.value.substring(endPos, theBox.value.length);
theBox.value = text;
var nHeight = theBox.scrollHeight - oHeight;
theBox.scrollTop = oPosition + nHeight;
};
function mb_BBCodePrim(open,close) {
};
function rb_BBCodePrim(open,paste,close) {
if (paste.length == 0) { open +=close; }
else { open +=paste+close; }
var theBox = document.commandDispatcher.focusedElement;
var startPos = theBox.selectionStart;
var endPos = theBox.selectionEnd;
var selectionLen = endPos - startPos
var oPosition = theBox.scrollTop;
var oHeight = theBox.scrollHeight;
var text=theBox.value.substring(0,startPos);
var nHeight = theBox.scrollHeight - oHeight;
text +=open;
text +=theBox.value.substring(endPos, theBox.value.length);
theBox.value = text;
theBox.selectionStart = endPos + open.length;
theBox.selectionEnd = endPos + open.length - selectionLen;
theBox.scrollTop = oPosition + nHeight;
};
Кнопка где вызов:
function rbMouse(){
var open="", close="", paste = readFromClipboard();
//v_rb_BBCodePrim(open,paste,close);
v_rb_BBCodePrim();
};
//----------------------------------------
this.onclick = function(event) {
if(event.button == 0) {
// Действие при клике ЛКМ
lbMouse();
}
else if(event.button == 1) {
// Действие при клике СКМ
}
else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
// Действие при клике ПКМ без модификаторов
rbMouse();
}
};
this.oncontextmenu = function(event) {
if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
// Блокируем контекстное меню при клике ПКМ без модификаторов
event.preventDefault();
event.stopPropagation();
}
};
PS Причём alert срабатывает, видимо дело или в описании функции или в аргументах функции... методом тыка пытаюсь найти. Не очень хочется плодить глоб. переменные, хотя они и работают в виде буферных, но ....
Отредактировано Indomito (15-07-2010 13:27:56)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
А кто мне скажет как в секцию /*Initialization Code*/ вставить XUL-код, а? Это вроде возможно или мне кажется?
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Как вызвать функцию из кнопки которая (функция) находится в другой кнопке?
Можно считать, что никак.
По идее все функции глобальны или же функции описанные в кнопке, скажем в области инициализации это методы кнопки?
Функции, описанные в разделе инициализации - это локальные функции безымянной функции, которая выполняет код из раздела инициализации. То же и для раздела "Код".
как в секцию /*Initialization Code*/ вставить XUL-код, а?
Вот пример:
var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menu label="Почта" image="http://mail.rambler.ru/favicon.ico"> <menupopup> <menuitem label="yandex" class="menuitem-iconic" image="http://img.imgsmail.ru/r/favicon.ico" cb:url="http://www.mail.ru/"/> <menuitem label="google" class="menuitem-iconic" image="http://66.102.9.104/favicon.ico" cb:url="http://gmail.google.com"/> <menuitem label="rambler" class="menuitem-iconic" image="http://mail.rambler.ru/favicon.ico" cb:url="http://mail.rambler.ru"/> </menupopup> </menu> <menu label="Поиск"> <menupopup> <menuitem label="google" class="menuitem-iconic" image="http://66.102.9.104/favicon.ico" cb:url="http://www.google.com"/> <menuitem label="yandex" class="menuitem-iconic" image="http://img.yandex.net/i/favicon.ico" cb:url="http://www.yandex.ru"/> </menupopup> </menu> <menuitem label="mysite.ru" cb:url="mysite.ru"/> <menuitem label="forum.example.org" cb:url="forum.example.org"/> </menupopup>; this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; this. handleClick = function (event) { var menuitem = event. target; var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url"); if (event. button == 0) loadURI (url); else if (event. button == 1) gBrowser. addTab (url); this. open = false; };
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton секундочку... вся суть вопроса в том...
Есть listbox, беру пример из https://developer.mozilla.org/en/XUL/listbox и вижу
Код:
var theList = document.getElementById('theList ');
gems = [ {gem: "Ruby", Price: "$3,500 - $4,600"},
{gem: "Emerald", Price: "$700 - 4,250"},
{gem: "Blue Sapphire", Price: "$3,400 - $4,500"},
{gem: "Diamond", Price: "$5,600 - $16,000"} ];
for (var i = 0; i < gems.length; i++)
{
var row = document.createElement('listitem');
var cell = document.createElement('listcell');
cell.setAttribute('label', gems[i].gem);
row.appendChild(cell);
cell = document.createElement('listcell');
cell.setAttribute('label', gems[i].Price );
row.appendChild(cell);
theList.appendChild(row);
}
Просьба поправь меня что бы я понял, ибо код я сам понимаю, но как его распределить между Инит и Кодом не пойму....
PS Сорри что так быстро и сумбурно, просто я okkamas_knife уже замучал, а он не знает что с ним делать и посылает.... к тебе Да, я подобный код видел в теме, но как его приспособить с кодом ListBox я так и не совсем понял.
Отредактировано Indomito (15-07-2010 19:33:52)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
ListBox дочерним узлом кнопки работать не будет.
я об просто окне типа Alert, но с выбором, те есть просто метод/возможность вызвать его?
И о видимости функций. Если функцию определить как functionObjectName = new Function ([arg1, arg2, ... argn], functionBody), где functionObjectName имя глоб. переменной, тогда получится или то же нет?
PS ListBox дочерним узлом кнопки работать не будет. - те без наследования или что... потеря обработчика событий? Просто я не очень понял.
Отредактировано Indomito (15-07-2010 19:48:48)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
я об просто окне типа Alert, но с выбором
Это можно без xul:
var selected = {}; var arr = ["a", "b", "c"]; var x = custombuttons. selectBox ("title", "msg", arr, selected); if (x [0]) alert (arr [x [1]. value]);
Если функцию определить как functionObjectName = new Function ([arg1, arg2, ... argn], functionBody), где functionObjectName имя глоб. переменной, тогда получится или то же нет?
Получится.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton блин... спасибо, а то я мучался со списками, цитированием, etc.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Anton вопрос об отладке своих кнопок.
Я поставил DOM Inspector 2.0.6 и Java Script Debugger 0.9.87.4, но отловить действия по нажатию или событиям для своих кнопок так и не могу. Искал мануал в инете - не нашёл, а что было, так достаточно сложное англоязычное описание.
Нет, мануала на русском языке или упрощённое на англ. языке?
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Нет, мануала на русском языке или упрощённое на англ. языке?
Нет, мануала у меня нет.
Кстати, ни DOM Inspector, ни Java Script Debugger не помогут отловить действия по нажатию/событию и т. д.
Единственное средство отладки - alert в роли брейкпоинта и сообщения об ошибках в консоли ошибок. Чтобы видеть ошибки, надо установить в about:config параметры javascript.options.strict и javascript.options.showInConsole в true.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton ясно отключу эти дополнения, да ксати, я тут полез в инет и обнаружил разночтения в описании функций-объектов
Вариант № 1 functionObjectName = new Function ([arg1, arg2, ... argn], functionBody);
Вариант № 2 functionObjectName = new Function ([arg1, arg2, ... argn]) { functionBody };
Какой правильный то?
Да, вот ещё я искал в JS (в 3-х справочниках) метод var x = custombuttons. selectBox ("title", "msg", arr, selected); и не обнаружил, хотя по уму он должен быть описан... так может есть ещё что то или нормальный справочник или я что то недопонимаю.
Отредактировано Indomito (15-07-2010 23:12:10)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Извините пожалуйста, когда-то ставила кнопку поиск на странице, а теперь не могу найти((
Отсутствует
krselezneva Если эта toggle find (показать-скрыть поиск по странице), то она здесь здесь
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Какой правильный то?
А какой работает ?
Да, вот ещё я искал в JS (в 3-х справочниках) метод var x = custombuttons. selectBox ("title", "msg", arr, selected); и не обнаружил
Этот метод предоставляется расширением Custom Buttons.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
А какой работает ?
пока проверяю, а как проверю и отлажу - скажу.
Этот метод предоставляется расширением Custom Buttons.
а где прочитать о других методах, ну что бы не тратить время на обходные и зачастую ложные поиски, тс того что уже есть.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
а где прочитать о других методах, ну что бы не тратить время на обходные и зачастую ложные поиски, тс того что уже есть.
chrome://custombuttons/content/cb2api.js
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton и так докладываю
№1. Конструкция/декларация hvrFunctionName = new function ([arg1,arg2,...,argN] bodyFunction);
Я не сумел заставить её работать из-за синтаксиса hvrFunctionName = new function ("arg1","arg2",...,"argN", "bodyFunction"); те тело функции имеет string-структуру и годится для небольших и не сложных операций, или же просто не воспринимается дополнением Custom Buttons, можно перепроверить на более простых функциях. Мне так и не удалось соблюсти синтаксис JS.
№2. Конструкция/декларация hvrFunctionName = function ([arg1,arg2,...,argN]) { bodyFunction};
Работает и имеет глобальную видимость, в контексте дополнения Custom Buttons, где bodyFunction - набор операций языка JS, как и у стандартно объявленной функции function hvrFunctionName ([arg1,arg2,...,argN]) { bodyFunction};.
№3. Конструкция/декларация var hvrFunctionName = function ([arg1,arg2,...,argN]) { bodyFunction}; тоже что №2, только локальная видимость, те в пределах одной кнопки.
okkamas_knife для уточнения решил дописать.
Конструкция/декларация oiuy = function(){alert("zxccv");} сработала потому что было явное указание srting-параметра, а тело функции предопределено в JS,
а во Конструкция/декларация hvrFunctionName = function () {hfnFunctionName([arg1,arg2,...,argN]);} не сработает, так как указатель не создаётся и принимается как null point, а что точно на принимается за аргументы без их явной типизации или константного определения, не ясно, хотя парсинг проходит нормально.
Конструкция/декларация oiuy = function(){alert("zxccv");} это частный вариант №1
Вот вроде и всё.
PS Я могу ошибаться, так как на JS пишу меньше недели и по началу я думал что это все написано С++
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Всем спецам привет.Тут есть запрос,но автор видимо не пожелал воспользоваться советом.Попробую я попросить.
Есть интересное расширение http://forum.mozilla-russia.org/viewtopic.php?id=45251 но работает только через меню инструменты,что ни есть удобно.
Уважаемые спецы,сварганьте кнопочку плиз.
Отсутствует
vv07
У CaptureFox есть две команды — CaptureFox_cmdQuickStart, которая вызывается клавишами Ctrl+Shift+F и CaptureFox_cmdSilentStop, которая вызывается клавишами Ctrl+Alt+Shift+S
Первая по окончании записи показывает диалог сохранения/продолжения/отмены, вторая без диалогов
Если хоткеев недостаточно, и нужна кнопка, то код такой:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
с последним найтли билдом фф - у кб проблема (как была и у гризманки, но там уже исправили): если кликнуть ПКМ на КБ-кнопку не имеющую собственное ПКМ меню, т.е. когда должно вылести дефолтное кастомбаттонсовое - фон прозрачный, почти ничего не видно
mzfx
Отсутствует
iDev.Pi
Спасибо за сообщение об ошибке.
В репозитории есть исправление: http://hg.mozdev.org/custombuttons/rev/476c5431f139
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует