Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№205106-10-2010 13:01:25

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Что-то не получается разобраться в вашем коде...
Папка куда сохранять указывается вместо [gmail] ?

Мне нужно письмо на локальной машине что бы сохранялось, возможно вы меня не правильно поняли.

Отредактировано AbyssMoon (06-10-2010 13:04:00)

Отсутствует

 

№205206-10-2010 14:14:02

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 4.0

Re: Custom Buttons

Чтобы сохранять в «Локальные папки» почтового клиента, задайте в качестве адреса что-нибудь типа mailbox://nobody@Local%20Folders/Todo.
Если же вы хотите сохранять eml/html/txt-файлы в папку локальной файловой системы без диалога с выбором папки или файла, тут нужно повозиться, мне неохота :).

Отредактировано luitzen (06-10-2010 18:56:21)

Отсутствует

 

№205306-10-2010 15:11:23

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Ясно, и на этом большое спасибо, попробую покопать сам. :)

Отсутствует

 

№205406-10-2010 18:51:53

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

AbyssMoon

Где-нибудь в настройках нужно задать путь до какой-либо папки, на панель выносится кнопка по нажатию на которую выделенное письмо или письма сохраняются в папке, путь к которой указан в настройках, все...

Если речь идет о папке на диске, вот код:

скрытый текст

Выделить код

Код:

var pathToDirectory = "~/mymail"; // "/home/user/mymail

var Cc = Components. classes;
var Ci = Components. interfaces;
function getDirectory ()
{
    var dir = Cc ["@mozilla.org/file/local;1"].
          createInstance (Ci. nsILocalFile);
    dir. initWithPath (pathToDirectory);
    return dir;
}
function saveAsFile (uri, dir)
{
    var content = "";
    var subject = messenger. messageServiceFromURI (uri).
              messageURIToMsgHdr (uri). mime2DecodedSubject;
    var filename = GenerateValidFilename (subject, ".eml");
    var msgService = messenger. messageServiceFromURI (uri);
    var msgStream =  Cc ["@mozilla.org/network/sync-stream-listener;1"]. createInstance ();
    var consumer = msgStream. QueryInterface (Ci. nsIInputStream);
    var scriptInput = Cc ["@mozilla.org/scriptableinputstream;1"].
              createInstance ();
    var scriptInputStream = scriptInput. QueryInterface(Ci. nsIScriptableInputStream);
    scriptInputStream. init (consumer);
    try
    {
        msgService. streamMessage (uri, msgStream, msgWindow, null, false, null);
    }
    catch (ex)
    {
        alert("error: "+ex)
    }
    scriptInputStream. available ();
    while (scriptInputStream. available ())
    {
        content = content + scriptInputStream. read (512);
    }
    var subject = msgService. messageURIToMsgHdr (uri).
              mime2DecodedSubject;
    var fileName = GenerateValidFilename (subject, ".eml");
    var file = dir. clone ();
    file. append (fileName);
    if (file. exists ())
        file. createUnique (Ci. nsIFile. NORMAL_FILE_TYPE, 0664);
    var foStream = Cc ["@mozilla.org/network/file-output-stream;1"].
               createInstance (Ci. nsIFileOutputStream);
    var flags = 0x02 | 0x08 | 0x20;
    foStream. init (file, flags, 0664, 0);
    foStream. write (content, content. length);
    foStream. close ();
}
var dir = getDirectory ();
if (!dir)
    return;
var messageArray = gFolderDisplay.selectedMessageUris;
for (var i = 0; i < messageArray. length; i++)
    saveAsFile (messageArray [i], dir);

Добавлено 06-10-2010 19:10:02
bunda1

вот код  который автоматически копирует выделенный текст
пожалуйста подскажи код который по ЛКМ включал и отключал мой код с сменой иконки.

Как-то вот так:

Инициализация

Выделить код

Код:

var eventHandler =
{
    button: null,

    mousedown: function ()
    {
    this. lastSelection = getBrowserSelection ();
    },

    mouseup: function ()
    {
    var selection = getBrowserSelection ();
    if (selection && (selection != this. lastSelection))
        goDoCommand ("cmd_copy");
    },
    
    handleEvent: function (event)
    {
    if (this. button. checked)
        this [event. type] ();
    }
};

eventHandler. button = this;
//this. type = "checkbox";

window. addEventListener ("mousedown", eventHandler, false);
window. addEventListener ("mouseup", eventHandler, false);

Код

Выделить код

Код:

this. checked = !this. checked;
if (this. checked)
    this. image = "http://corset.47.forumer.com/imageset/corset/items.png";
else
    this. image = "http://corset.47.forumer.com/imageset/corset/element.png";

скрытый текст
Кстати, если используется 0.0.5.1 или какая-нибудь из промежуточных предварительных сборок 0.0.5.2, рекомендую вместо

Выделить код

Код:

window. addEventListener ("mousedown", eventHandler, false);
window. addEventListener ("mouseup", autocopyStop, false);

пользоваться

Выделить код

Код:

addEventListener ("mousedown", eventHandler, false);
addEventListener ("mouseup", eventHandler, false);

Отредактировано Anton (06-10-2010 19:33:57)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№205506-10-2010 22:20:42

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Anton

Спасибо,ты лучший.

Отсутствует

 

№205607-10-2010 10:59:23

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Спасибо огромное, сейчас попробую...

Отсутствует

 

№205707-10-2010 15:15:04

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Подпилил под себя немного ваш код, спасибо за помощь.
Еще один маленький вопросец, а можно что бы сохранялся только текст сообщения в теле файла без всего остального мусора?

Отсутствует

 

№205808-10-2010 19:28:52

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

AbyssMoon пишет

а можно что бы сохранялся только текст сообщения в теле файла без всего остального мусора?

Только так:

скрытый текст

Выделить код

Код:

var pathToDirectory = "~/mymail";

var preserveCharset = true;

var useOutCharset = true;
var outCharset = "utf-8";
var outType = "text"; // "html", "text"

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 (subject, (outType == "html"? ".html": ".txt"));
    var messageService = messenger. messageServiceFromURI (uri);

        var body = "";

        var dataListener =
    {
            QueryInterface: function (aIID)
        {
                if (aIID. equals (Ci. nsISupports) || aIID. equals (Ci. nsIStreamListener))
                    return this;
                throw Cr. NS_NOINTERFACE;
            },
        
            onStartRequest: function () {},
        
            onStopRequest: function ()
        {
        try
        {
            var suc = Cc ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Ci. nsIScriptableUnicodeConverter);
            suc. charset = charset;
            body = suc. ConvertToUnicode (body);
            var s1 = Cc ["@mozilla.org/supports-string;1"]. createInstance (Ci. nsISupportsString);
            s1. data = body;
            var s2 = {};
            var content = body;
            if (outType == "text")
            {
                var ios = Cc ["@mozilla.org/widget/htmlformatconverter;1"]. createInstance (Ci. nsIFormatConverter);
                ios. convert ("text/html", s1, content. length, "text/unicode", s2, {});
                content = s2. value. QueryInterface (Ci. nsISupportsString). data;
            }
            if (useOutCharset || preserveCharset)
            {
                suc = Cc ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Ci. nsIScriptableUnicodeConverter);
                suc. charset = (preserveCharset? charset: outCharset) || "utf-8";
                var content = suc. ConvertFromUnicode (content);
            }
            var file = dir. clone ();
            file. append (filename);
            if (file. exists ())
            file. createUnique (Ci. nsIFile. NORMAL_FILE_TYPE, 0664);
            var foStream = Cc ["@mozilla.org/network/file-output-stream;1"].
                       createInstance (Ci. nsIFileOutputStream);
            var flags = 0x02 | 0x08 | 0x20;
            foStream. init (file, flags, 0664, 0);
            foStream. write (content, content. length);
            foStream. close ();
        }
        catch (e)
        {
            alert(e);
        }
        },
        
            onDataAvailable: function (req, context, inputStream, offset, count)
        {
        var sis = Cc ["@mozilla.org/scriptableinputstream;1"]. createInstance(Ci. nsIScriptableInputStream);
                sis. init (inputStream);
                sis. available ();
                while (sis. available ())
                    body += sis. read (count);
            }
        };

        var initialListener =
    {
            QueryInterface: function (aIID)
        {
                if (aIID. equals (Ci. nsISupports) || aIID. equals (Ci. nsIStreamListener))
                    return this;
                throw Cr. NS_NOINTERFACE;
            },
        
            streamConverter: null,
        
            onStartRequest: function (request, context)
        {
                this. streamConverter = Cc ["@mozilla.org/streamconv;1?from=message/rfc822&to=application/vnd.mozilla.xul+xml"]. createInstance (Ci. nsIStreamConverter);
                this. streamConverter. asyncConvertData ("message/rfc822", "application/vnd.mozilla.xul+xml", dataListener, request);
                this. streamConverter. onStartRequest (request, context);
            },
            
            onStopRequest: function (request, context, status)
        {
                this. streamConverter. onStopRequest (request, context, status);
            },
            
            onDataAvailable: function (req, context, inputStream, offset, count)
        {
                this. streamConverter. onDataAvailable (req, context, inputStream, offset, count);
            }
        };

        messageService. streamMessage (uri, initialListener, {}, null, true, null);
}

var dir = getDirectory ();
if (!dir)
    return;

var messageArray = gFolderDisplay.selectedMessageUris;
for (var i = 0; i < messageArray. length; i++)
    getText (messageArray [i], dir);

Других идей нет.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№205909-10-2010 10:18:46

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Спасибо огромное!
У меня создается файл, но он пустой, занимает 1б.
В чем может быть проблема?

upd: некоторые письма не сохраняет, а некоторые сохраняет.
Похоже сохраняет только те, которые в html пришли...
С кодировкой что-то еще не ясное, не смог подобрать, что бы они отображались нормально.

P.S. OS - Ubuntu 10.10 RC

Отредактировано AbyssMoon (09-10-2010 10:22:26)

Отсутствует

 

№206009-10-2010 11:20:08

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

AbyssMoon пишет

У меня создается файл, но он пустой, занимает 1б.
В чем может быть проблема?

Только что нашел у себя в imap учетке одно такое. Помогла замена

Выделить код

Код:

messageService. streamMessage (uri, initialListener, {}, null, true, null);

на

Выделить код

Код:

messageService. streamMessage (uri, initialListener, {}, null, false, null);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№206109-10-2010 11:41:35

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Огромное спасибо! :o

Те письма, которые не сохранялись, теперь сохраняются и в них текст отлично читается, но вот в некоторых письмах, что-то с кодировкой, не могу ничем их прочесть...
Судя по коду они сохраняются в utf8 как я понял, но даже через браузер текст нормально не отображается, я перебирал кодировки...

Отсутствует

 

№206209-10-2010 12:19:35

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

AbyssMoon

Можно попробовать выставить preserveCharset и useOutCharset в false и закомментировать строку

Выделить код

Код:

body = suc. ConvertToUnicode (body);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№206309-10-2010 12:48:05

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Заработало, огромное спасибо!

Отсутствует

 

№206409-10-2010 16:17:14

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Переделал немного предыдущий код:

скрытый текст

Выделить код

Код:

var pathToDirectory = "~/mymail";

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 (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);
    
    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);


Убрал преобразование кодировок и преобразование в plain text и немного упростил работу с потоками.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№206509-10-2010 16:39:31

AbyssMoon
Участник
 
Группа: Members
Зарегистрирован: 05-10-2010
Сообщений: 14
UA: Firefox 3.6

Re: Custom Buttons

Огромное спасибо, под себя еще немного вот так допили. :)

скрытый текст

Выделить код

Код:

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);
    
    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);

Отредактировано AbyssMoon (09-10-2010 16:39:49)

Отсутствует

 

№206610-10-2010 05:15:15

Крошка Ру
Участник
 
Группа: Extensions
Зарегистрирован: 19-10-2008
Сообщений: 8718
UA: Firefox 4.0

Re: Custom Buttons

Господа! а можно сваять кнопочку для создания кликабельного списка дополнений ? :angel: А то   InfoLister, Extension List Dumper и MR Tech Toolkit  не хотят работать на [firefox] 4.0* :dumb:

Отредактировано Крошка Ру (10-10-2010 05:17:04)

Отсутствует

 

№206710-10-2010 17:41:13

Mr. Di
Участник
 
Группа: Members
Зарегистрирован: 14-07-2007
Сообщений: 27
UA: Firefox 3.6

Re: Custom Buttons

Подскажите, пожалуйста, код одной кнопки, который позволяет сделать автофокус в адресную строку при вводе на странице текста+при нажатии левой кнопки мыши очищает url bar+делает возможным вставлять из буфера обмена текст нажатием средней кнопки мыши (колеса)?

Отсутствует

 

№206810-10-2010 18:39:47

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Крошка Ру

скрытый текст

Выделить код

Код:

var am = {};
Components. utils. import ("resource://gre/modules/AddonManager.jsm", am);
am = am. AddonManager;

function dumpObject (obj)
{
    var s = "";
    for (var i in obj)
    {
        try
        {
            if (typeof (obj [i]) == "function")
                s += "*** FUNCTION: " + i + "\n";
            else
                s += i + ": " + obj [i] + "\n";
        }
        catch (e)
        {
            s += "*** ERROR: " + i + "\n";
        }
    }
    alert (s);
}

function gatherInfo (type, items)
{
    var list = "", enabled = 0, disabled = 0;
    
    for (var i = 0; i < items. length; i++)
    {
        if (items [i]. type == type)
        {
            list += items [i]. name + " " + items [i]. version;
            if (items [i]. userDisabled || items [i]. appDisabled)
            {
                list += " [disabled]";
                disabled++;
            }
            else
                enabled++;
            list += "\n";
        }
    }
    
    return [enabled + disabled, enabled, disabled, list];
}

function extensionsCallback (extensions)
{
    var list = "";
    
    var info = Components. classes ["@mozilla.org/xre/app-info;1"]. getService (Components. interfaces. nsIXULAppInfo);
    
    list += info. vendor + " " + info. name + " " + info. version + " (build " + info. appBuildID + ")\n";
    list += "User Agent: " + navigator. userAgent + "\n\n";
    
    // languages
    list += "*** Languages";
    var locales = gatherInfo ("locale", extensions);
    list += " (enabled: " + locales [1] + ", disabled: " + locales [2] + "; all: " + locales [0] + ")\n" + locales [3] + "\n";
    
    // extensions
    list += "*** Extensions";
    var exts = gatherInfo ("extension", extensions);
    list += " (enabled: " + exts [1] + ", disabled: " + exts [2] + "; all: " + exts [0] + ")\n" + exts [3] + "\n";
    
    // themes
    list += "*** Themes";
    var themes = gatherInfo ("theme", extensions);
    list += " (" + themes [0] + ")\n" + themes [3] + "\n";
    
    // plugins
    list += "*** Plugins";
    var plugins = gatherInfo ("plugin", extensions);
    list += " (enabled: " + plugins [1] + ", disabled: " + plugins [2] + "; all: " + plugins [0] + ")\n" + plugins [3];
    
    var oldIPI = XML. ignoreProcessingInstructions;
    var oldPP = XML. prettyPrinting;
    XML. ignoreProcessingInstructions = false;
    var dialog = <>
    <?xml-stylesheet href="chrome://global/skin/"?>
    <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        xmlns:html="http://www.w3.org/1999/xhtml"
            id="cbbExtensionsLister"
            persist="width height screenX screenY"
            title="Extensions"
            width="640" height="480"
            buttons="accept,extra1"
            buttonlabelextra1="Copy…"
            onload="init()"
            ondialogextra1="copy()">
        <script type="application/x-javascript">
            <![CDATA[
                function init () {}
                function copy ()
                {
                    var tb = document. getElementById ("addonslist");
                    window. arguments [0]. write (tb. value);
                    tb. focus ();
                }
            ]]>
        </script>
        <textbox id="addonslist" flex="1" multiline="true" value={list}/>
    </dialog></>;
    dialog = "data:application/vnd.mozilla.xul+xml," + dialog. toXMLString ();
    XML. ignoreProcessingInstructions = oldIPI;
    window. openDialog (dialog, "", "chrome,dependent,minimizable,dialog=no", custombuttonsUtils. gClipboard);
}

am. getAllAddons (extensionsCallback);


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№206910-10-2010 20:13:39

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Mr. Di

Подскажите, пожалуйста, код одной кнопки, который позволяет сделать автофокус в адресную строку при вводе на странице текста+при нажатии левой кнопки мыши очищает url bar+делает возможным вставлять из буфера обмена текст нажатием средней кнопки мыши (колеса)?

Код здесь: http://forum.mozilla-russia.org/viewtop … 36#p447636, для обработки средней кнопки к нему надо добавить

Выделить код

Код:

this.midclick = function (evt)
{
    var urlbar = document. getElementById ("urlbar");
    urlbar. value = custombuttonsUtils. gClipboard. read ();
}

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№207010-10-2010 20:29:21

Крошка Ру
Участник
 
Группа: Extensions
Зарегистрирован: 19-10-2008
Сообщений: 8718
UA: Firefox 4.0

Re: Custom Buttons

Anton Спасибо :) ..... у меня кнопка не кликабельна но работает :lol: - после каждого перезапуска браузера самопроизвольно появляется окошко со списком расширений .... но подобный список можно скопировать и открыв about:support ,  а хотелось бы чтобы файл сохранялся   в html - формате  :angel:

Отредактировано Крошка Ру (10-10-2010 20:30:05)

Отсутствует

 

№207110-10-2010 20:33:20

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Крошка Ру пишет

после каждого перезапуска браузера самопроизвольно появляется окошко со списком расширений

Перемести код из раздела "Инициализация" в раздел "Код".


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№207210-10-2010 21:12:44

Крошка Ру
Участник
 
Группа: Extensions
Зарегистрирован: 19-10-2008
Сообщений: 8718
UA: Firefox 4.0

Re: Custom Buttons

Anton вот жесть :rolleyes: .... и как я только вкладки перепутать умудрился :dumb: смотрел же на КОД :blush:  .... вот теперь совсем другое дело..... а выбор форматов для сохранения добавить реально?

Отсутствует

 

№207310-10-2010 21:16:48

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Крошка Ру пишет

а выбор форматов для сохранения добавить реально?

Я за это браться не буду. : )

Вот код для сохранения в html:

скрытый текст

Выделить код

Код:

var am = {};
Components. utils. import ("resource://gre/modules/AddonManager.jsm", am);
am = am. AddonManager;

function gatherInfo (type, items)
{
    var list = "", enabled = 0, disabled = 0;
    
    for (var i = 0; i < items. length; i++)
    {
        if (items [i]. type == type)
        {
            list += items [i]. name + " " + items [i]. version;
            if (items [i]. userDisabled || items [i]. appDisabled)
            {
                list += " [disabled]";
                disabled++;
            }
            else
                enabled++;
            list += "\n";
        }
    }
    
    return [enabled + disabled, enabled, disabled, list];
}

function extensionsCallback (extensions)
{
    var oldIPI = XML. ignoreProcessingInstructions;
    XML. ignoreProcessingInstructions = false;
    
    var list = <>
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            </head>
            <body/>
        </html>
    </>;
    
    var info = Components. classes ["@mozilla.org/xre/app-info;1"]. getService (Components. interfaces. nsIXULAppInfo);
    
    list. body += <pre>{info. vendor + " " + info. name + " " + info. version + " (build " + info. appBuildID + ")\n"}</pre>;
    list. body += <pre>{"User Agent: " + navigator. userAgent + "\n\n"}</pre>;
    
    // languages
    var locales = gatherInfo ("locale", extensions);
    list. body += <pre>{"*** Languages (enabled: " + locales [1] + ", disabled: " + locales [2] + "; all: " + locales [0] + ")\n" + locales [3] + "\n"}</pre>;
    
    // extensions
    var exts = gatherInfo ("extension", extensions);
    list. body += <pre>{"*** Extensions (enabled: " + exts [1] + ", disabled: " + exts [2] + "; all: " + exts [0] + ")\n" + exts [3] + "\n"}</pre>;
    
    // themes
    var themes = gatherInfo ("theme", extensions);
    list. body += <pre>{"*** Themes (" + themes [0] + ")\n" + themes [3] + "\n"}</pre>;
    
    // plugins
    var plugins = gatherInfo ("plugin", extensions);
    list. body += <pre>{"*** Plugins (enabled: " + plugins [1] + ", disabled: " + plugins [2] + "; all: " + plugins [0] + ")\n" + plugins [3]}</pre>;
    
    var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
    suc. charset = "utf-8";
    list = suc. ConvertFromUnicode (list);
    
    var dialog = <>
    <?xml-stylesheet href="chrome://global/skin/"?>
    <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        xmlns:html="http://www.w3.org/1999/xhtml"
            id="cbbExtensionsLister"
            persist="width height screenX screenY"
            title="Extensions"
            width="640" height="480"
            buttons="accept,extra1"
            buttonlabelextra1="Save…"
            onload="init()"
            ondialogextra1="save()">
        <script type="application/x-javascript">
            <![CDATA[
                function init () {}
                function save ()
                {
                    var fp = Components. classes ["@mozilla.org/filepicker;1"]. createInstance (Components. interfaces. nsIFilePicker);
                    fp. init (window, "Select…", fp. modeSave);
                    fp. appendFilters (fp. filterHTML);
                    var res = fp. show ();
                    if (res == fp. returnOK)
                        window. arguments [0] (fp. fileURL. path, window. arguments [1]);
                }
            ]]>
        </script>
        <html:iframe flex="1" id="addonslist" src={"data:text/html;base64," + btoa (list)}/>
    </dialog></>;
    dialog = "data:application/vnd.mozilla.xul+xml," + dialog. toXMLString ();
    XML. ignoreProcessingInstructions = oldIPI;
    window. openDialog (dialog, "", "chrome,dependent,minimizable,dialog=no", custombuttonsUtils. writeFile, list);
}

am. getAllAddons (extensionsCallback);


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№207410-10-2010 21:28:58

Крошка Ру
Участник
 
Группа: Extensions
Зарегистрирован: 19-10-2008
Сообщений: 8718
UA: Firefox 4.0

Re: Custom Buttons

Вот код для сохранения в html:

Anton попробую добавить :angel:

Отсутствует

 

№207510-10-2010 22:55:16

Mr. Di
Участник
 
Группа: Members
Зарегистрирован: 14-07-2007
Сообщений: 27
UA: Firefox 3.6

Re: Custom Buttons

Anton пишет

Mr. Di

    Подскажите, пожалуйста, код одной кнопки, который позволяет сделать автофокус в адресную строку при вводе на странице текста+при нажатии левой кнопки мыши очищает url bar+делает возможным вставлять из буфера обмена текст нажатием средней кнопки мыши (колеса)?

Код здесь: http://forum.mozilla-russia.org/viewtop … 36#p447636, для обработки средней кнопки к нему надо добавить
Код:

this.midclick = function (evt)
{
    var urlbar = document. getElementById ("urlbar");
    urlbar. value = custombuttonsUtils. gClipboard. read ();
}

Ничего не работает, кроме автофокуса в адресную строку, подумал мож расширение какое-то не дает, поставил чистую Лису, сделал кнопку и вставил код, который Вы написали, но так и ничего не заработало кроме автофокуса.
Вот код, что у меня в инициализации, не меньше не больше, буква в букву:

var cb=custombuttons,self=this;
function l(str) {
  self.properties = {
    en_US:{     
      Label:       'Clear Address Bar',
      },
  };
  var str = cb.getLocalString(self, str);
  return str
}

this.leftclick   = function(evt) {
  var urlbar = document.getElementById('urlbar');
  if (urlbar) {
    urlbar.value = "";
    urlbar.focus();
  }
  return
}

this.label = l("Label");

this.setAttribute( 'onclick', 'gQuot( event, this )' );
this.setAttribute( 'ondblclick', 'custombuttons.gQuot.mHandler( event, this )' );

this.setAttribute('onmouseover', 'custombuttons.ButtonBrt(event);' );
this.setAttribute('onmouseout', 'custombuttons.ButtonDim(event);' );
document.getElementById("appcontent").addEventListener("keypress", func, true);

function func(e) {
    if (e.target.tagName != 'TEXTAREA' &&
        e.target.tagName != 'INPUT' &&
        e.which != 32 &&
        e.which != 8 &&
        e.which != 0 &&
        !e.ctrlKey &&
        !e.altKey)
        {
        document.getElementById('urlbar').focus();
        document.getElementById('urlbar').value = String.fromCharCode(e.which);
        }
}

this.midclick = function (evt)
{
    var urlbar = document. getElementById ("urlbar");
    urlbar. value = custombuttonsUtils. gClipboard. read ();
}

Посмотрите, пожалуйста, может что-то с кодом, что может быть не так, может кнопку нужно обозвать или что-то ещё, но если на голой лисе не срабатывает, значит что-то не то с кодом или я совсем деревянный?

ИЗВИНИТЕ, все работает, только, скорее всего я не правильно выразился. Все работает при нажатии ЛКМ на самой кнопке и вставляется в адресную строку при нажатии средней кнопкой мыши на самой кнопке. А я имел ввиду, что сотрется адресная строка при нажатии ЛКМ на любом месте интернет страницы, кроме текстового поля, а по нажатию средней кнопки мыши колеса произойдет вставка в любом текстовом поле браузера. Антон, кудесник, Вы сможете такое написать?

Отредактировано Mr. Di (10-10-2010 23:10:03)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]