ndima
чтоб например появлялся список открытых вкладок при навидении
Если в раздел "Инициализация" кнопок, которые привел okkamas_knife здесь: http://forum.mozilla-russia.org/viewtop … 13#p397413 добавить
то меню будет открываться при наведении.
Крошка Ру
okkamas_knife что-то у меня кнопка не реагирует -пробовал и тот и другой код , наверное упустил какой ньанс при создании
Ссылки вида custombutton:// - предназначены для установки кнопок через строку адреса браузера или с помощью ссылки на веб-странице а не для помещения в разделы "Код" или "Инициализация" кнопок.
Также с помощью такой ссылки, если она находится в буфере обмена, можно "обновить" уже существующую кнопку, т. е., пересоздать эту кнопку и назначить ей все атрибуты той кнопки, на основе которой эта ссылка была создана.Добавлено 20-11-2009 21:14:19
okkamas_knifeкак работает this.setAttribute("tooltiptext", "блаблабла");
почему в одном случае все срабатывает нормально а в другом нет?Помнишь, Infocatcher тебе толковал про контекст выполнения ?
Это как раз то самое, из-за контекста выполнения.
Спасиб огромное сработало, от это да, да, это целое расширение получилось, как бы его теперь скомпановать и разместить на мозила одон, думаю рейтинг быстро наберется, если еще красивых скринов приложить то ваще в топе окажется, говорят расширения с вкладками одни из самых популярных! Спасиб огромное, теперь при наведении )
Кнопки закрытия вкладок, ее не хватает и ctrl+F4 не срабатывает
Отредактировано ndima (20-11-2009 23:36:28)
Отсутствует
Ссылки вида custombutton:// - предназначены для установки кнопок через строку адреса браузера или с помощью ссылки на веб-странице а не для помещения в разделы "Код" или "Инициализация" кнопок.
Также с помощью такой ссылки, если она находится в буфере обмена, можно "обновить" уже существующую кнопку, т. е., пересоздать эту кнопку и назначить ей все атрибуты той кнопки, на основе которой эта ссылка была создана.
Anton Спасиб , а я даже внимания не обратил на начало кода
Отредактировано Крошка Ру (20-11-2009 23:56:55)
Отсутствует
Крошка Ру при открытии новой вкладки с кнопки "новая вкладка" панель вкладок появляется
Скажите пожалуйста вот расширение https://addons.mozilla.org/ru/firefox/search/?q=close+forget от него можно взять кнопку из контекстного меню со всеми функциями и разметить ее в меню вкладок заместо faviconов? получится отличной кнопкой закрытия вкладки
Отредактировано ndima (21-11-2009 00:15:28)
Отсутствует
ndima ага,и при переходе по ссылке тоже
Отсутствует
ndima ага,и при переходе по ссылке тоже
Надо что то делать!!! ) да?
у меня тода получалось, ставил autohidetabbar потом потом устанавливал ручное скрытие, скрывал, удалял autohide и с перезагрузкой картина оставалась, как и до перезагрузки т.е. без панели вкладок.
еще теперь не могу вернуть кнопки свернуть, закрыть потому что удалил кнопку hide chrome потому что при каждой загрузке ff появляется полоса на верху, которую и скрывает кнопка т.е. куки чтоли не сохраняются, понять не могу im lol!
Отредактировано ndima (21-11-2009 00:25:53)
Отсутствует
Отсутствует
ndima ждать и надеяться
Воодушевляет! ) учился бы в школе я раньше на пятерки, щас бы и мозги были а так то да ток ето и остается, велика Русь матушка на мозги и добрых людей полным полно, на них вся и опора, но спасибо Крошка Ру за отзывчивость и участия рад общению, очень!
P.S. установил hidetitle bar, появились кнопки, ура. )
В общем тема two dimensions потом autohidestatusbar, hide tabbar, Hide Caption Titlebar, personal menu и еще для закрытия вкладок close button, кнопка всех вкладок которая появилось благодаря участию от вас за что огромное спасибо! и супер ff с виду для меня стал! )
Отредактировано ndima (21-11-2009 04:50:39)
Отсутствует
Приветствую Мастеров Высшего Пилотажа!
Я написал вот такой макрос (Макрос1):
VERSION BUILD=6240709 RECORDER=FX TAB OPEN TAB T=2 URL GOTO=http://www.myip.ru/ TAG POS=4 TYPE=TD ATTR=TXT:* EXTRACT=TXT SET !VAR1 {{!EXTRACT}} SET !EXTRACT NULL TAB T=1 URL GOTO=http://www.iopus.com/imacros/demo/v6/f1/form.asp TAG POS=1 TYPE=TEXTAREA FORM=NAME:TestForm ATTR=NAME:Remarks CONTENT={{!VAR1}}
и его продолжение (Макрос2):
VERSION BUILD=6240709 RECORDER=FX TAB OPEN TAB T=2 URL GOTO=http://www.myip.ru/ TAG POS=4 TYPE=TD ATTR=TXT:* EXTRACT=TXT SET !VAR1 {{!EXTRACT}} SET !EXTRACT NULL TAB T=1 TAG POS=1 TYPE=TEXTAREA FORM=NAME:TestForm ATTR=TXT:* EXTRACT=TXT SET !VAR2 {{!EXTRACT}} SET !EXTRACT NULL TAG POS=1 TYPE=TEXTAREA FORM=NAME:TestForm ATTR=NAME:Remarks CONTENT={{!VAR2}}<BR>{{!VAR1}}
Он определяет мой динамичный IP и записывает его в список.
Возникает вопрос: можно ли сравнить последний IP с имеющимися в списке и, если его нет в списке, то открыть произвольный URL в новой вкладке?
P.S. Пока не стал запихивать эти макросы в скрипт, но если нужно, то можно представить и в виде скрипта.
Отсутствует
а для чего макрос то?
Можно и скриптом, я не против Просто я использовал iMacros, при желании можно и его на кнопку посадить.
получить его не проблема
Во-во, это и мне ясно.
останется только както сохранять этот массив и считывать при запуске браузера а уж провести сравнение нового с имеющимися не проблема. - цикл перебирающий тот массив и обычное сравнение с нужным действием по условию... как вариант их можно хранить в закладках
создать там папочку и добавлять адреса туда и оттуда же брать.
Вот такой скрипт как раз и хотелось бы увидеть, сам я это не осилю.
Потому и обращаюсь к МВП (Мастерам Высшего Пилотажа).
Отредактировано useragentswitcher (21-11-2009 16:30:28)
Отсутствует
как победить это гадский тултип который никак не хочет работать внутри функции нормально
Ключевое слово "this" в деталях
Если кратко, то значение ссылки «this» зависит от способа вызова функции, в которой она используется.
В начале кода инициализации нужно запомнить текущее значение this (когда this указывает на кнопку):
И далее переменная _this будет доступна через замыкание, т.е. следующий код будет работать:
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Опять я, скажите пожалуйста, где можно посмотреть строки которые надо прописать в кнопке, чтобы вызвать список "Меню/Журнал/недавно закрытые вкладки"? потом добавить код с этой страницы который подсказал Anton для раскрытия при навидении и получится хорошо
Заранее благодарю.
Отредактировано ndima (21-11-2009 18:52:57)
Отсутствует
ndima
http://forum.mozilla-russia.org/viewtop … 72#p369572
+ заменить
на
Добавлено 21-11-2009 19:30:11
Или, чтобы всегда открывалось в одном и том же месте,
this.onmouseover = function(e) { this.updUI(); var mp = this._mp; if("openPopup" in mp) mp.openPopup(this, "after_start"); else mp.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); };
Отредактировано Infocatcher (21-11-2009 19:54:09)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
ndima
Нужно сделать кнопку Custom Buttons с приведенным по ссылке кодом для секции «инициализация».
P.S. Забыл, что там уже использовалось onmouseover, сообщение отредактировал.
P.P.S. MDC утверждает, что showPopup нынче deprecated, так что код для кнопки тоже подправил.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Теперь понятно, благодарю Infocatcher отличное расширение, хорошо бы в настройках него бы ссылку прилепить по которой есть оформленная страница с образцами и примерами кнопок без коментариев и т.д. с сылкой на этот форум например , которые являются популярными и проверенными кнопками, чтобы заходить и смотреть и copy paste и готово!(потому что многие его скачивают но не сумев разобраться и не поняв для чего оно идут дальше и качают новое расширение)
Отсутствует
Возникает вопрос: можно ли сравнить последний IP с имеющимися в списке и, если его нет в списке, то открыть произвольный URL в новой вкладке?
А этот последний IP при этом где находится – уже добавлен в список?
var ips = "0.0.0.0\n1.1.1.1\n2.2.2.2"; // исходные строки с IP-адресами ips = ips .replace(/^\s+|\s+$/g) // удаляем пробельные символы «с краев» .split(/\s+/); // получаем массив, любые пробельные символы – разделители
И теперь у нас есть
ips.length – длина массива (количество элементов)
ips[ips.length - 1] – последний элемент (нумерация идет с нуля)
А если сам массив больше не понадобится, можно сравнивать в виде
if(ips.pop() != ips.pop()) // сравнивает последний элемент массива с предпоследним, сами элементы из массива удаляются gBrowser.addTab("http://ya.ru/");
Или
if(ips.indexOf(ips.pop()) == -1) // извлекает последний элемент и ищет его среди оставшихся, возвращает индекс или -1 gBrowser.addTab("http://ya.ru/");
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
СПАСИБО БОЛЬШОЕ!!!
А этот последний IP при этом где находится – уже добавлен в список?
Да, он последний в списке.
Но, если нужно, то можно последний IP добавлять в список и после сравнения.
var ips = "0.0.0.0\n1.1.1.1\n2.2.2.2"; // исходные строки с IP-адресами
Буду теперь думать как собранные в окне браузера цифры запихнуть в переменную (не вручную).
если сам массив больше не понадобится
Список будет постоянно пополняться уже использованными ранее IP, в конец списка будет добавляться текущий IP, в конце концов в базе будут все использованные за сутки IP.
Отсутствует
Буду теперь думать как собранные в окне браузера цифры запихнуть в переменную (не вручную).
Н-ну, хранить список в файле и считывать его оттуда, например.
Все зависит от того, как долго нужно хранить список.
var newIp = "0.0.0.0"; var filePath = "C:\\IP.txt"; var io = { getLocalFile: function(path, normalizeFlag) { if(!path) return path; path = path.replace( /^%(\w+)%/, function(s, id) { try { return Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get(id, Components.interfaces.nsILocalFile) .path; } catch(e) { Components.utils.reportError("Invalid directory alias: " + s + "\n" + e); return s; } } ); var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); try { file.initWithPath(path); } catch(e) { Components.utils.reportError("Invalid path: " + path + "\n" + e); return null; } normalizeFlag && file.normalize(); // dir1/dir2/../file -> dir1/file return file; }, writeToFile: function(str, file) { // UTF-8 var fos = Components.classes["@mozilla.org/network/file-output-stream;1"] .createInstance(Components.interfaces.nsIFileOutputStream); fos.init(file, 0x02 | 0x08 | 0x20, 0666, 0); var cos = Components.classes["@mozilla.org/intl/converter-output-stream;1"] .createInstance(Components.interfaces.nsIConverterOutputStream); cos.init(fos, "UTF-8", 0, 0); cos.writeString(str); cos.close(); // this closes fos }, readFromFile: function(file) { // UTF-8 var fis = Components.classes["@mozilla.org/network/file-input-stream;1"] .createInstance(Components.interfaces.nsIFileInputStream); var sis = Components.classes["@mozilla.org/scriptableinputstream;1"] .createInstance(Components.interfaces.nsIScriptableInputStream); fis.init(file, 0x01, 0444, null); sis.init(fis); var str = sis.read(fis.available()); sis.close(); fis.close(); return this.convertToUnicode(str); }, convertToUnicode: function(str) { var suc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); suc.charset = "utf8"; try { return suc.ConvertToUnicode(str); } catch(e) { Components.utils.reportError("Can't convert UTF-8 to unicode\n" + e); } return str; } }; var file = io.getLocalFile(filePath); var ips = file && file.exists() ? io.readFromFile(file).split("\n") : []; if(ips.indexOf(newIp) == -1) { ips.push(newIp); io.writeToFile(ips.join("\n"), file); gBrowser.addTab("http://ya.ru/"); }
Путь к файлу можно задавать относительно профиля:
или
Или относительно других известных путей.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher, твой код работает великолепно! Спасибо!
Перед ним я выполняю вот такой код:
var macro; var jsLF = "\n"; /* Send code example */ macro = "CODE:"; macro += "TAB OPEN" + jsLF; macro += "TAB T=2" + jsLF; macro += "SET !EXTRACT_TEST_POPUP NO" + jsLF; macro += "URL GOTO=http://www.myip.ru/" + jsLF; macro += "TAG POS=4 TYPE=TD ATTR=TXT:* EXTRACT=TXT" + jsLF; macro += "SET !VAR1 {{!EXTRACT}}" + jsLF; macro += "SET !EXTRACT NULL" + jsLF; retcode = iimPlay(macro);
Он извлекает мой текущий IP с сайта http://www.myip.ru/.
Могу ли я каким-то образом напрямую задать {{!VAR1}} в var newIp вместо вот этого её текстового значения:
var newIp = "0.0.0.0";
Все зависит от того, как долго нужно хранить список.
Одни сутки, максимум - двое суток.
Спасибо тебе за помощь!!!
Отредактировано useragentswitcher (22-11-2009 04:37:11)
Отсутствует
useragentswitcher
Он определяет мой динамичный IP и записывает его в список.
Возникает вопрос: можно ли сравнить последний IP с имеющимися в списке и, если его нет в списке, то открыть произвольный URL в новой вкладке?
Если я правильно понял, то
var ipListFilePath = "c:\\iplist.txt"; // Путь к файлу со списком ip var url = "http://ya.ru/"; // Произвольный url var obj = { req: null, button: this, url: url, ipListFilePath: ipListFilePath, send: function () { this. req = new XMLHttpRequest (); this. req. open ("GET", "http://www.myip.ru/get_ip.php?loc=", true); this. req. onload = this; this. req. send (null); }, getIPList: function () { var res = []; try { res = custombuttonsUtils. readFile (this. ipListFilePath). split (/[\r\n]+/); } catch (e) {} return res; }, addIPToList: function (ip) { var ipList = this. getIPList (); ipList. push (ip); custombuttonsUtils. writeFile (this. ipListFilePath, ipList. join ("\n")); }, handleEvent: function (event) { var rt = this. req. responseText; rt = rt. match (/<TD[\s\S]*?>([\s\S]*?)<\/TD>/g) [1]; rt = rt. match (/>([\s\S]*?)</) [1]; var ipList = this. getIPList (); if (ipList. indexOf (rt) == -1) { gBrowser. addTab (this. url, null, null); this. addIPToList (rt); } } }; obj. send ();
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Если я правильно понял, то
Антон, как всегда - великолепно! Работает чётко!
Большое спасибо!
Отсутствует
getBrowser (). selectedTab = getBrowser (). addTab (url)
okkamas_knife, спасибо! Ты мне тоже помог!
P.S. Я тебе репутацию повысил
Отсутствует
okkamas_knife http://forum.mozilla-russia.org/viewtop … pid=397691 супер!!!
(Просьба к модераторам перенести тему в раздел Обсуждение расширений и дополнений сам там создавать новые темы не могу,заодно Создайте там тему Обсуждение готовых кнопок к Custom Buttons )
присоединяюсь.
P.S. okkamas_knife там есть код, открытие вкладок и там можно несколько вкладок прописать, скажи пожалуйста, а не получится чтоб эти адреса в виде списка при наведении ниспадающего появлялись?
Кстати вот например ставлю Custom Buttons это позволяет удалить два расширения из установленных за ненадобностью, и нагрузка на ff снижается, т.к. стало на одно расширение меньше в браузере?
Отредактировано ndima (22-11-2009 20:04:32)
Отсутствует
Спасибо okkamas_knife за код.
Добавил в инициализацию
, но почему то при наведении не реагирует хотя в кнопке списка вкладок получалось и как в нем прописать адреса для favicon сайтов?
Отсутствует