Отсутствует
Сново приветствую!
Есть код(спасибо большое за него):
var pathToDirectory = "~/web"; // "/home/labirint/web var Cc = Components. classes; var Ci = Components. interfaces; var Cr = Components. results; function getDirectory () { var dir = Cc ["@mozilla.org/file/local;1"]. createInstance (Ci. nsILocalFile); dir. initWithPath (pathToDirectory); return dir; } function getText (uri) { var header = messenger. messageServiceFromURI (uri). messageURIToMsgHdr (uri); var charset = header. Charset || "utf-8"; var subject = header. mime2DecodedSubject; var filename = GenerateValidFilename (messenger. messageServiceFromURI (uri). messageURIToMsgHdr (uri). mime2DecodedAuthor + " - " + subject, ".html"); var messageService = messenger. messageServiceFromURI (uri); var file = dir. clone (); file. append (filename); // if (file. exists ()) // file. createUnique (Ci. nsIFile. NORMAL_FILE_TYPE, 0664); if (file. exists ()) file. createUnique (Ci. nsIFile. DIRECTORY_TYPE, 0755); else file. create (Ci. nsIFile. DIRECTORY_TYPE, 0755); file. append (filename); if (file. exists ()) file. createUnique (Ci. nsIFile. NORMAL_FILE_TYPE, 0664); else file. create (Ci. nsIFile. NORMAL_FILE_TYPE, 0664); var ssl = { foStream: null, QueryInterface: function (iid) { if (iid. equals (Ci. nsISupports) || iid. equals (Ci. nsIStreamListener)) return this; throw Cr. NS_ERROR_NO_INTERFACE; }, onStartRequest: function (request, context) { this. foStream = Cc ["@mozilla.org/network/file-output-stream;1"]. createInstance (Ci. nsIFileOutputStream); var flags = 0x02 | 0x08 | 0x20; this. foStream. init (file, flags, 0664, 0); }, onStopRequest: function (request, context, status) { this. foStream. close (); }, onDataAvailable: function (request, context, inputStream, offset, count) { var sis = Cc ["@mozilla.org/scriptableinputstream;1"]. createInstance(Ci. nsIScriptableInputStream); sis. init (inputStream); sis. available (); while (sis. available ()) this. foStream. write (sis. read (count), count); } }; var chanURI = messageService. streamMessage (uri, null, {}, null, false, null); var ios = Cc ["@mozilla.org/network/io-service;1"]. getService (Ci. nsIIOService); var chan = ios. newChannelFromURI (chanURI); chan. contentType = "message/rfc822"; var streamConverter = Cc ["@mozilla.org/streamconv;1?from=message/rfc822&to=application/vnd.mozilla.xul+xml"]. createInstance (Ci. nsIStreamConverter); streamConverter. asyncConvertData ("message/rfc822", "application/vnd.mozilla.xul+xml", ssl, chan); chan. asyncOpen (streamConverter, null); } var dir = getDirectory (); if (!dir) return; var messageArray = gFolderDisplay.selectedMessageUris; for (var i = 0; i < messageArray. length; i++) getText (messageArray [i], dir);
Идет сохранение письма в html, можно как-то делать преобразование в простой txt?
Благодарю за помощь.
Отсутствует
или в /*Initialization Code*/ кнопки
bunda1 добавил - работает , а стиль для Stylish запомню, может ещё пригодится
Добавлено 26-10-2010 12:23:27
Может подойдет popup-toolbar
imyax Попробую
Отсутствует
Идет сохранение письма в html, можно как-то делать преобразование в простой txt?
Можно попробовать воспользоваться методом nsIMsgFolder.getMsgTextFromStream (https://developer.mozilla.org/en/XPCOM_ … omStream()).
Вот тут: https://developer.mozilla.org/en/Extens … _by_Header пример использования.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Fest0 написал:Всем привет! А возможно сделать кнопочку, которая бы не открывала одинаковые ссылки, т.е. если ссылка на сайт уже открыта во вкладках, второй раз клик по этой ссылке бы ничего не загружал, а просто мигало то окошко, которое уже открыто... СпасибоЭто сложно даже для ссылок, открываемых во вкладках, не говоря уже о вообще всех ссылках.Вот есть вариант, хотя работает не во всех случаях (например, не обрабатывает закладки).
Работает только если правой кнопкой выбирать "открыть в новой вкладке" и то, если вкладка уже открыта, то он на неё переключится автоматически, а лучше чтобы оставался на той, которой был. Для флешек тоже не работает((
Отсутствует
Тут кнопочка была, которая открывает произвольную(рандомную) внутреннюю ссылку на активном сайте, а можно ли её переделать чтобы на сайте допустим site.ru она открывала исключительно внешние ссылки (рандомные также), поддомены при этом считать внутренними ссылками...
Вот код той кнопочки:
function makeURL (url) { var uri = makeURI (url); try { uri = uri. QueryInterface (Components. interfaces. nsIURL); } catch (e) { uri = null; } return uri; } var doc = gBrowser. contentDocument; var cdurl = makeURL (doc. location. href); cdurl. ref = ""; var links = doc. links; var inlinks = []; var curl; for (var i = 0; i < links. length; i++) { curl = makeURL (links [i]. href); if (curl && (curl. host == cdurl. host)) inlinks. push (links [i]. href); } if (inlinks. length != 0) { var ind = Math. floor (Math. random () * inlinks. length); loadURI (inlinks [ind]); }
Отсутствует
Fest0
Работает только если правой кнопкой выбирать "открыть в новой вкладке"
Ещё при открытии вкладки средней кнопкой мыши.
если вкладка уже открыта, то он на неё переключится автоматически, а лучше чтобы оставался на той, которой был
Надо заменить
на
Для флешек тоже не работает((
Я сразу сказал, что работает не во всех случаях.
Добавлено 28-10-2010 21:31:31
Mits
Попробуй заменить
на
if (curl && (cdurl. host == "site.ru")) { if (curl. host != cdurl. host) inlinks. push (links [i]. href); } else if (curl && (curl. host == cdurl. host)) inlinks. push (links [i]. href);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Кнопочка Tab History иногда работает не правильно: нажал средней кнопкой на кнопку "назад" а он открывает не предыдущую страницу, а одну из более старых.
А ещё предупреждения от этой кнопки сыпятся в консоль ошибок:
[Custom Buttons: id: custombuttons-button34@init, line: 8, name: Tab History]
copyHistory
если можно - подправьте, пожалуйста.
mzfx
Отсутствует
Mits
Попробуй так. В начало добавь
function getBaseDomain (uri) { try { var tlds = Components. classes ["@mozilla.org/network/effective-tld-service;1"]. getService (Components. interfaces. nsIEffectiveTLDService); return tlds. getBaseDomain (uri); } catch (e) {} return uri. host; } var host = "site.ru";
на
if (curl && (getBaseDomain (cdurl) == host)) { if (getBaseDomain (curl) != host) inlinks. push (links [i]. href); } else if (curl && (curl. host == cdurl. host)) inlinks. push (links [i]. href);
p.s. Добавил try/catch в getBaseDomain ()
Добавлено 29-10-2010 18:50:22
А ещё предупреждения от этой кнопки сыпятся в консоль ошибок:
[Custom Buttons: id: custombuttons-button34@init, line: 8, name: Tab History]
copyHistory
Это не предупреждения, а отладочные сообщения.
Если мешают — найди в коде строки с вызовами LOG и удали.
Отредактировано Anton (29-10-2010 18:35:52)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
сделать кнопочку, которая бы не открывала одинаковые ссылки
Я сразу сказал, что работает не во всех случаях.
Раньше было расширение Highlander. Возможно, оно все еще работает.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
....к сожалению, не работает на свежих версиях ФФ
Отсутствует
bibirada
в /*Initialization Code*/ какой нибудь кнопки.
function autocopyStop(e) {
var selection = getBrowserSelection();
if(selection && selection != lastSelection) {
goDoCommand('cmd_copy');
}
}
window.addEventListener("mousedown", autocopyStart, false);
window.addEventListener("mouseup", autocopyStop, false);
Отсутствует
а в кнопки из поста №2426 можно добавлять не только ссылки на сайты, а и custombuttons ?
как такое можно реализовать?
Только вручную.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Только вручную.
расскажи пожалуйста немного подробнее, как вручную добавить туда свои кнопки!
Получается так, вот код твоей кнопки:
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;
};
Отсутствует
или я вообще всё не так понял?
Наверное я слишком лаконично ответил. Нет, custombuttons на такую панель поместить нельзя.
Можно написать код, который будет обрабатывать кнопки в такой панели.
Только, чур, меня не просить : )
Добавлено 04-11-2010 15:15:09
Можно сделать так: найти нужную кнопку в buttonsoverlay.xul, скопировать всю строку, например
<toolbarbutton id="custombuttons-button0" label="test0052" tooltiptext="test0052" class="toolbarbutton-1 chromeclass-toolbar-additional" context="custombuttons-contextpopup" cb-stdicon="custombuttons-stdicon-1" cb-oncommand="/*CODE*/
alert (this. id + ": " + this. name);" cb-init="/*Initialization Code*/
" cb-mode="0"/>
и вставить вместо какой-нибудь кнопки-ссылки.
После строки
надо добавить
Работать, правда, будут не все.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Не совсем разобрался, чем это может помочь)))) Подскажите плз))
Fest0 о, только сейчас заметил - это меня замкнуло на Custom Buttons .... думал старая версия не хочет работать на 4.0* .... а у Вас вообще 3.5 * да и само дело совершенно не в этом
Добавлено 05-11-2010 17:15:12
Inko7 написал:а в кнопки из поста №2426 можно добавлять не только ссылки на сайты, а и custombuttons ?как такое можно реализовать?Только вручную.
Inko7 написал:или я вообще всё не так понял?Наверное я слишком лаконично ответил. Нет, custombuttons на такую панель поместить нельзя.Можно написать код, который будет обрабатывать кнопки в такой панели.Только, чур, меня не просить : )Добавлено Вчера 15:15:09Можно сделать так: найти нужную кнопку в buttonsoverlay.xul, скопировать всю строку, напримерКод:<toolbarbutton id="custombuttons-button0" label="test0052" tooltiptext="test0052" class="toolbarbutton-1 chromeclass-toolbar-additional" context="custombuttons-contextpopup" cb-stdicon="custombuttons-stdicon-1" cb-oncommand="/*CODE*/
alert (this. id + ": " + this. name);" cb-init="/*Initialization Code*/
" cb-mode="0"/>и вставить вместо какой-нибудь кнопки-ссылки.После строкиКод:var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url");надо добавитьКод:if (!url) return;Работать, правда, будут не все.
Вот это кажется интересно - надо попробовать
Отредактировано Крошка Ру (05-11-2010 17:11:42)
Отсутствует
Ребят, может кто-то кнопку сделать по смене юзер-агента чтобы кликнул юзер агент сменился, кликнул снова установился по умолчанию.
стандартыные параметры юзер-агента нужно менять на звёздочку вот пример так:
ntl.charset.default *
network.http.accept-encoding *
intl.accept_languages *
Отредактировано amin01 (07-11-2010 02:25:35)
Отсутствует
Добрый день господа!
Возможно ли создать кнопку с подобным функционалом?
Мы выделяем текст на странице (кстати он может быть с картинками, но пусть даже без), нажимаем кнопку, появляется запрос на сохранение выделенного участка(или сохраняется сразу в указанный заранее каталог), как это реализовано в "Fast Notes".
Обязательно должна присутсвовать возможность сохранения в ворде(или только в ворде), и что бы автоматом к тексту добавлялась ссылка на ту страницу с которой было копирование, желательно снизу, в конце текста.
Или в виде кнопки подобное реализовать невозможно? Тогда может скрипт какой-то? Или куда обратиться с подобным вопросом?
Насколько понимаю, все-таки копать нужно вокруг браузера? Все это можно реализовать посредством браузера? Или все-таки может потребоваться отдельная программа?
Подробности, в теме http://forum.mozilla-russia.org/viewtopic.php?pid=454616#p454616
Отсутствует
suhov2
вот когда-то мне делал подобную кнопку Jarichek...
var text = getString(); if (text == "") { return; } else { SaveText(); } function SaveText() { var directoryService = Components.classes['@mozilla.org/file/directory_service;1'].getService(Components.interfaces.nsIProperties); var desktopFolder = directoryService.get('Desk', Components.interfaces.nsIFile); var desktopPath = desktopFolder.QueryInterface(Components.interfaces.nsILocalFile).path; var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); var fileName = getFileName(); file.initWithPath(desktopPath); file.append(fileName); if (file && file.exists()) { pttlAppend(file); } else { saveDefault(file); } } function manipulateString(text) { var l = text.length; if (l == 0) return ""; while (text[0] == " ") { text = text.slice(1, l); } l = text.length; while (text[l - 1] == " ") { text = text.slice(0, l - 1); l = text.length; } return text; } function getString() { var hlText = ""; var focusedWindow = document.commandDispatcher.focusedWindow; hlText = focusedWindow.getSelection.call(focusedWindow); hlText = hlText.toString(); hlText = manipulateString(hlText); return hlText; } function getPttlDivisor() { var now = new Date(); var thisYear = now.getFullYear(); var thisMonth = now.getMonth() + 1; var thisDate = now.getDate(); var thisHours = now.getHours(); var thisMinutes = now.getMinutes(); var thisSeconds = now.getSeconds(); var thisTime = new Array(thisYear, thisMonth, thisDate, thisHours, thisMinutes, thisSeconds); var webNav = getBrowser().webNavigation; var pttlTimeDiv = ""; var winTitle = webNav.document.title; var winURL = webNav.currentURI.spec; for (var i = 0; i < 6; i++) { if (thisTime[i] < 10) thisTime[i] = "0" + thisTime[i]; } pttlTimeDiv = pttlTimeDiv + winTitle + " - (" + winURL + ")"; pttlTimeDiv = pttlTimeDiv + "\u000D\u000A" + thisTime[0] + "/" + thisTime[1] + "/" + thisTime[2] + " " + thisTime[3] + ":" + thisTime[4] + ":" + thisTime[5]; pttlTimeDiv = pttlTimeDiv + "\u000D\u000A" + "----------------------------------\u000D\u000A\u000D\u000A"; return pttlTimeDiv; } function getFileName() { var now = new Date(); var thisYear = now.getFullYear(); var thisMonth = now.getMonth() + 1; var thisDate = now.getDate(); var thisTime = new Array(thisYear, thisMonth, thisDate); var pttlTime = ""; for (var i = 0; i < 3; i++) { if (thisTime[i] < 10) thisTime[i] = "0" + thisTime[i]; pttlTime = pttlTime + thisTime[i]; if (i != 2) pttlTime = pttlTime + "-"; } pttlTime = pttlTime + ".txt"; return pttlTime; } function saveDefault(fileS) { var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream); var pttlDiv = getPttlDivisor(); stream.init(fileS, 0x02 | 0x08 | 0x20, 0664, 0); converter.init(stream, "windows-1251", 0, 0x0000); converter.writeString(pttlDiv); converter.writeString(text); converter.close(); stream.close(); } function pttlAppend(fileA) { var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream); var pttlDiv = getPttlDivisor(); stream.init(fileA, 0x02 | 0x10, 0664, 0); converter.init(stream, "windows-1251", 0, 0x0000); converter.writeString("\u000D\u000A\u000D\u000A\u000D\u000A" + pttlDiv); converter.writeString(text); converter.close(); stream.close(); }
Отсутствует