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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№1182605-06-2017 10:08:50

Rag
Участник
 
Группа: Members
Откуда: Краснодон
Зарегистрирован: 06-03-2017
Сообщений: 242
UA: Firefox 53.0

Re: Custom Buttons

Indomito
Мы друг друга не поняли.
Ну да ладно.

Отсутствует

 

№1182705-06-2017 10:19:16

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

okkamas_knife пишет:

Indomito пишет:
Сейчас ищу решение.

элементарно ватсон...

Привет, давно тут не пересекались  тут.... а можно расшифровку, а то слово конфиг понятие растяжимое. :D


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1182805-06-2017 12:16:09

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9523
UA: Seamonkey 2.14

Re: Custom Buttons

ну настройки ты куда пишешь?
используй настройку обычную строку а не комплексную(расширенную) как у тебя
а чтоб кириллицу не корёжило кодируй значение перeд записью а при чтении декодируй

Отредактировано okkamas_knife (05-06-2017 12:21:44)


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.

Отсутствует

 

№1182906-06-2017 07:39:43

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

Легче не стало, я не удивил комплексный тип, такого и нет в JS.
Буду использовать то что есть - у меня единственная проблема это проверка наличмя самой переменной или мы друг - друга просто не понимаем. :)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1183006-06-2017 11:50:55

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9523
UA: Seamonkey 2.14

Re: Custom Buttons

ты походу совсем упрограммировался. возьми отпуск чтоль.
вот ты юзаешь gPrefService.getComplexValue
а надо getCharPref / setCharPref
что непонятного то?


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.

Отсутствует

 

№1183106-06-2017 11:58:00

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

Ясно, конвертировать в UTF-8 нужно?

У меня не совместимость версий кнопки возникла - а как её обойти я хз. :sick:


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1183206-06-2017 12:17:38

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

Re: Custom Buttons

Indomito пишет:

У меня не совместимость версий кнопки возникла - а как её обойти я хз. :sick:

А что за несовместимость?

Отсутствует

 

№1183306-06-2017 12:45:27

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

bunda1 пишет:

Indomito пишет:

У меня не совместимость версий кнопки возникла - а как её обойти я хз. :sick:

А что за несовместимость?

Старая версия не требовала путь конвертировать в UTF-8 и не нужно было обратное действие, новая версия это делает.
Кнопка не запоминает что она изменила содержимое Export.Import.CB.type.HTML значит надо вводит ещё переменную что бы точно знать.

Вариативно:
Ввёл Ctrl+Middle   —  Сбос каталога кнопок, да название так себе, но у меня работает.

Выделить код

Код:

//Сбросить, старой версию каталог записи/чтения
function ctrlKeymbMouse(){
        cbu.clearPrefs(cEICB);
    cbu.setPrefs(cEICB, convertFromUnicode("UTF-8", cPathEI) );
    custombuttons. alertBox (cEICB, "Сброс - "+cEICB+" = "+cPathEI);
};

Остальные пишут в ЛС, создают всё в ручную, через - about:config, а иначе ни как не получается.

Работать должно на 100%, у меня без проблем.


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1183406-06-2017 13:00:39

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9523
UA: Seamonkey 2.14

Re: Custom Buttons

Indomito пишет: Ясно, конвертировать в UTF-8 нужно?

1 получил путь в переменную
2 енкодишь как я писал
3 записываешь значение в конфиг, в обычную строковую переменную.
--
читаешь значение той переменной , декодишь как я писал выше - получаешь путь в нормальном виде.
утф строковая переменная не поддерживает .

Indomito пишет: У меня не совместимость версий кнопки возникла - а как её обойти я хз.

ессно.тип то значения в конфиге изменился
проверяешь версию кнопки, если старая то работаешь со старым,комплексным вариантом значения
если новая - создай еще один строковый параметр типа Export.Import.CB.type1.HTML и работай с ним.


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.

Отсутствует

 

№1183506-06-2017 13:12:05

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

Re: Custom Buttons

Indomito
Пусть кнопка проверит существование cEICB и если cEICB существует перекодирует и перепишет путь в cEICB.

Отсутствует

 

№1183606-06-2017 13:14:26

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

okkamas_knife пишет:

если новая - создай еще один строковый параметр типа Export.Import.CB.type1.HTML и работай с ним.

ну я так и решил Export.Import.CB.type.HTML.FF53, а старую т.е. Export.Import.CB.type.HTML просто удалю, а то такая путаница будет... сам могу запутаться. :)

okkamas_knife пишет:

утф строковая переменная не поддерживает

ты про исходник на JS-кнопки?

Добавлено 06-06-2017 13:28:02

bunda1 пишет:

Indomito
Пусть кнопка проверит существование cEICB и если cEICB существует перекодирует и перепишет путь в cEICB.

А потом то как, с чем сравнивать - путь может поменяться, т.е. попытки сравнить с действительным путем... тут надо что писать или есть готовая функция?

Отредактировано Indomito (06-06-2017 13:28:02)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1183706-06-2017 13:48:07

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1013
UA: Firefox 45.0

Re: Custom Buttons

Indomito пишет:

у меня единственная проблема это проверка наличмя самой переменной

Используй Preferences.has()
И вообще открой во вкладке resource://gre/modules/Preferences.jsm и смотри.

dedfor пишет:

Здравствуйте ребят! Не сможете ли создать СВ, которая изменяла бы значение куки. Например домен: ".yandex.ru", имя куки:"yandex_gid" и поменять значение на "67". Спасибо.

:/

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

Выделить код

Код:

((bsp, id) => {
    addDestructor(reason => id in bsp && reason[5] == "e" && bsp[id].destroy());
    if (id in bsp) return;
    bsp.Services.obs.addObserver(bsp[id] = {
        data: {
            ".yandex.ru": {"yandex_gid": "67"}
        },
        observe(subject, topic, data) {
            if (data == "added" || data == "changed") this.change(subject);
        },
        change(cookie) {
            var {host, path, name, value, isSecure, isHttpOnly, isSession, expiry} =
                cookie.QueryInterface(Ci.nsICookie2);
            if (!(host in this.data && name in this.data[host])) return;
            var val = this.data[host][name];
            value != val && bsp.Services.cookies.add(
                host, path, name, val, isSecure, isHttpOnly, isSession, expiry
            );
        },
        destroy() {bsp.Services.obs.removeObserver(this, "cookie-changed"); delete bsp[id];}
    }, "cookie-changed", false);
    var en = bsp.Services.cookies.enumerator;
    while(en.hasMoreElements()) bsp[id].change(en.getNext());
})(Cu.import("resource://gre/modules/Services.jsm", {}), "dedforCookieChanger1");


fokanik пишет:

А из кнопки может как-то можно? Мне нужно smplayer так запускать

Проверка. Win7. ctypes.

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

Выделить код

Код:

var path = "C:\\Program Files (x86)\\SMPlayer\\smplayer.exe";

alert(path + "\n\nrunning: " + isSMPlayerRunning(path));

function isSMPlayerRunning(path, processesCount = 2000) {
    var {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", {}); 
    var kernel32 = ctypes.open("kernel32.dll");

    // https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629%28v=vs.85%29.aspx
    var K32EnumProcesses = kernel32.declare("K32EnumProcesses", ctypes.winapi_abi, ctypes.bool,
        ctypes.uint32_t.ptr,   // out DWORD  *pProcessIds     A pointer to an array that receives the list of process identifiers.
        ctypes.uint32_t,       // in  DWORD  cb               The size of the pProcessIds array, in bytes.
        ctypes.uint32_t.ptr    // out DWORD  *pBytesReturned  The number of bytes returned in the pProcessIds array.
    );

    // https://msdn.microsoft.com/en-us/library/windows/desktop/ms684880%28v=vs.85%29.aspx
    var PROCESS_VM_READ = 0x0010;
    var PROCESS_QUERY_LIMITED_INFORMATION = 0x1000;

    // https://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
    var OpenProcess = kernel32.declare("OpenProcess", ctypes.winapi_abi, ctypes.voidptr_t,
        ctypes.uint32_t,   // in DWORD  dwDesiredAccess     The access to the process object.
        ctypes.bool,       // in BOOL   bInheritHandle
        ctypes.uint32_t    // in DWORD  dwProcessIdThe      The identifier of the local process to be opened.
    );

    // https://msdn.microsoft.com/en-us/library/windows/desktop/ms724211%28v=vs.85%29.aspx
    var CloseHandle = kernel32.declare("CloseHandle", ctypes.winapi_abi, ctypes.bool,
        ctypes.voidptr_t   // in HANDLE hObject    A valid handle to an open object.
    );

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms684919%28v=vs.85%29.aspx
    var QueryFullProcessImageNameW = kernel32.declare("QueryFullProcessImageNameW", ctypes.winapi_abi, ctypes.bool,
        ctypes.voidptr_t,    // in     HANDLE  hProcess     A handle to the process.
        ctypes.uint32_t,     // in     DWORD   dwFlags
        ctypes.jschar.ptr,   // out    LPTSTR  lpExeName    The path to the executable image. If the function succeeds, this string is null-terminated.
        ctypes.uint32_t.ptr  // inout  PDWORD  lpdwSize     On input, specifies the size of the lpExeName buffer, in characters. On success, receives the number of characters written to the buffer
    );

    var result, length = path.length + 1; // null-terminated

    var processIdsSize = new ctypes.uint32_t(processesCount);
    var processIds = ctypes.uint32_t.array(processesCount)();
    try {
        K32EnumProcesses(processIds, processIdsSize, processIdsSize.address());
        var desiredAccess = PROCESS_VM_READ | PROCESS_QUERY_LIMITED_INFORMATION;
        for(var ind = processIdsSize.value / ctypes.uint32_t.size; ind; ind--) {
            var processHandle = OpenProcess(desiredAccess, false, processIds[ind]);
            if (processHandle.isNull()) continue;

            var bufferSize = new ctypes.uint32_t(length);
            var buffer = ctypes.jschar.array(length)();
            var res = QueryFullProcessImageNameW(processHandle, 0, buffer, bufferSize.address());
            CloseHandle(processHandle);
            if ((result = res && buffer.readString() == path)) break;
        }
    } catch(ex) {Cu.reportError(ex);}
    kernel32.close();
    return result;
}

Отсутствует

 

№1183806-06-2017 14:08:06

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

Dumby пишет:

Используй Preferences.has()
И вообще открой во вкладке resource://gre/modules/Preferences.jsm и смотри.

Спасибо, я её аналог потерял... т.е. забыл адрес.


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1183906-06-2017 18:59:31

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9523
UA: Seamonkey 2.14

Re: Custom Buttons

Indomito пишет: ты про исходник на JS-кнопки?

я про значения
https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Preferences#Simple_types
то что string, если туда утф или локализованную строку писать то выйдут кракозябры
чтоб не извращаться с комплексным типом (по ссылке ниже ) проще кодировать данные в съедобный для  string формат и при чтении декодировать.

ну и до кучи
var n=custombuttons.isPref("custombuttons.button.test"); если существует то true если нет то false


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.

Отсутствует

 

№1184007-06-2017 06:27:23

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

okkamas_knife Спасибо за информацию.

Выделить код

Код:

custombuttons.isPref = function (prefName) {
                return srcObject [sMethodName]. apply (srcObject, arguments);
            }

или

Выделить код

Код:

Preferences.has = function(prefName) {
  if (Array.isArray(prefName))
    return prefName.map(this.has, this);
  return (this._prefBranch.getPrefType(prefName) != Ci.nsIPrefBranch.PREF_INVALID);
};

По сути разница не велика, меня другое волнует/заботит это проверка  cEICB  на валидный путь.

Отредактировано Indomito (07-06-2017 10:11:10)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1184107-06-2017 06:59:03

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9523
UA: Seamonkey 2.14

Re: Custom Buttons

Indomito пишет: По сути разница не велика, меня другое волнует/заботит это проверка  cEICB  на валидный путь.

курим https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O
1 проверяем наличие настройки
2 юзая try ... catch пытаемся считать значение как string
если не удалось то как complex
3 получив значение пытаемся декодить его
(не вышло - оставляем как есть)
4 проверяем наличие папки с этим адресом ( file.exists()  file.isDirectory() )
если облом то путь невалиден (или папки не существует)


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.

Отсутствует

 

№1184207-06-2017 11:38:23

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

okkamas_knife Спасибо за линк(по старому линку ничего нет) https://developer.mozilla.org/en-US/Add … s/File_I_O.... Хорошая у тебя трава... курю. :sick:

Может кому и пригодится:  WebDeveloperKitChm[пароль=BoitQa].rar - трояна нет(просто зашифровал архив), просто левые AVP срабатывают, например NOD 32, а пустые логи прикладывать, это как то садомазохизм. ;)

Комплект для веб-дизайнера. Учебники по HTML, CSS, JavaScript, а также переводы спецификаций
CSS_tutor.chm - учебник по каскадным стилям CSS;
HTML_tutor.chm - учебник по языку верстки веб-страниц HTML;
Html401CSS2_specification.chm - переводы оригинальных спецификаций HTML 4.01 и CSS 2.0
JavaScript15_reference.chm - справочник по JavaScript1.5
JavaScript15_tutor.chm - учебник по JavaScript 1.5

P.S. Проверять в https://www.virustotal.com/ru можете сами, но посмотрите кто срабатывает. :)

Отредактировано Indomito (07-06-2017 12:48:05)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1184307-06-2017 22:42:16

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: Seamonkey 2.46

Re: Custom Buttons

Dumby пишет:

Проверка. Win7. ctypes.
isSMPlayerRunning(path))

Великолепно, благодарствую! :music:

Отсутствует

 

№1184409-06-2017 08:08:38

dedfor
Участник
 
Группа: Members
Зарегистрирован: 22-12-2016
Сообщений: 59
UA: Chrome 58.0

Re: Custom Buttons

Почему не работает третья строка кода, где ошибка?

Выделить код

Код:

function scroll_down(){content.scrollTo(0, content.scrollMaxY);}
content.document.location.href='http://yandex.ru/search/?&text='+"Zapros";
window.onload = function (){scroll_down()};

Как заставить работать не применяя setTimeout?

Отредактировано dedfor (09-06-2017 10:03:06)

Отсутствует

 

№1184509-06-2017 10:37:45

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

Re: Custom Buttons

window.onload = function (){scroll_down()};
Не работает потому что window на который ты повесил обработчик уже загружен. Тут нужен обработчик на новую страницу или что ты там открываешь. Пример:

Выделить код

Код:

        var page = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab('http://yandex.ru/search/?&text='+'Zapros') ); 
          
        page.addEventListener("pageshow", function c(e) {         
           this.removeEventListener( e.type, c );           

           setTimeout(function() {              
              scroll_down();
           }, 0);      
        });

Отсутствует

 

№1184609-06-2017 11:24:22

dedfor
Участник
 
Группа: Members
Зарегистрирован: 22-12-2016
Сообщений: 59
UA: Chrome 58.0

Re: Custom Buttons

спасибо

Отредактировано dedfor (11-06-2017 06:03:08)

Отсутствует

 

№1184709-06-2017 19:26:39

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 53.0

Re: Custom Buttons

okkamas_knife пишет:

4 проверяем наличие папки с этим адресом ( file.exists()  file.isDirectory() )
если облом то путь невалиден (или папки не существует)

Вот с этим не получатся... можно пример на валидность пути - наличие папки с этим адресом ( file.exists()  file.isDirectory() )


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№1184809-06-2017 21:36:15

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9523
UA: Seamonkey 2.14

Re: Custom Buttons

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

Выделить код

Код:

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\tmp\\test.txt");
var n=file.exists();
alert(n);
var n=file.isDirectory()
alert(n);


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


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.

Отсутствует

 

№1184911-06-2017 06:07:19

dedfor
Участник
 
Группа: Members
Зарегистрирован: 22-12-2016
Сообщений: 59
UA: Chrome 58.0

Re: Custom Buttons

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

Выделить код

Код:

zapros= "вешалки";
page= gBrowser.getBrowserForTab(gBrowser.selectedTab= gBrowser.addTab('http://yandex.ru/search/?&text='+ zapros) ); 
    page.addEventListener("pageshow", function c(e) {
    this.removeEventListener( e.type, c );           
    content.scrollTo(0, content.scrollMaxY);      
        });


Данный код открывает сайт в НОВОЙ вкладке и опускает вниз после загрузки страницы.
Помогите создать подобный код для загрузки сайта в ТЕКУЩЕЙ вкладке.
Спасибо

Отредактировано dedfor (11-06-2017 06:35:29)

Отсутствует

 

№1185013-06-2017 10:59:54

intersk
Участник
 
Группа: Members
Зарегистрирован: 20-06-2013
Сообщений: 90
UA: Firefox 53.0

Re: Custom Buttons

подскажите линк на кнопку - позволяющую закрывать вкладку двойным правым щелчком

Отсутствует

 

Board footer

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