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

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№160102-05-2010 07:51:16

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

Re: Custom Buttons

Fest0 пишет

Есть файл txt находящийся на компьютере, предположим c:\www\link.txt, в котором с каждой новой строки идут ссылки. Нужна кнопка, которая рандомом выбирала любую из этих ссылок (строк), вставляла бы её в адресную строку и переходила на неё.

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

Выделить код

Код:

var path = "c:\\www\\link.txt";

var urls = custombuttonsUtils. readFile (path);
urls = urls. split (/[\r\n]{1,2}/);

if (urls. length != 0)
{
    var ind = Math. floor (Math. random () * urls. length);
    loadURI (urls [ind]);
}

Fest0 пишет

И аналогичная кнопка, которая вставляла бы тоже самое в поле для поиска.

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

Выделить код

Код:

var path = "c:\\www\\link.txt";

var words = custombuttonsUtils. readFile (path);
words = words. split (/[\r\n]{1,2}/);

if (words. length != 0)
{
    var ind = Math. floor (Math. random () * words. length);
    var sb = document. getElementById ("searchbar");
    sb. doSearch (words [ind], "current");
    sb. value = words [ind];
    sb. _textbox. _formHistSvc. addEntry (sb. _textbox. getAttribute ("autocompletesearchparam"), words [ind]); // Если надо добавить текст в историю поиска
}


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

Отсутствует

 

№160202-05-2010 09:17:48

Fest0
Участник
 
Группа: Members
Зарегистрирован: 24-04-2010
Сообщений: 23
UA: Firefox 3.5

Re: Custom Buttons

Спасибо наиогромнейшее! Очень очень большое спасибо!

Отсутствует

 

№160304-05-2010 02:02:44

Fest0
Участник
 
Группа: Members
Зарегистрирован: 24-04-2010
Сообщений: 23
UA: Firefox 3.5

Re: Custom Buttons

Выделить код

Код:

var path = "c:\\www\\link.txt";

var words = custombuttonsUtils. readFile (path);
words = words. split (/[\r\n]{1,2}/);

if (words. length != 0)
{
    var ind = Math. floor (Math. random () * words. length);
    var sb = document. getElementById ("searchbar");
    sb. doSearch (words [ind], "current");
    sb. value = words [ind];
    sb. _textbox. _formHistSvc. addEntry (sb. _textbox. getAttribute ("autocompletesearchparam"), words [ind]); // Если надо добавить текст в историю поиска
}

Какие-то проблемы с кодировкой( Пробовал сохранять тхт файл во всех кодировках, какие возможны, но проблема не решается, до поискового бара доходят только кракозябры (если слова на русском)...

Отсутствует

 

№160404-05-2010 13:33:01

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

Re: Custom Buttons

Fest0 пишет

Какие-то проблемы с кодировкой( Пробовал сохранять тхт файл во всех кодировках, какие возможны, но проблема не решается, до поискового бара доходят только кракозябры (если слова на русском)...

Сохраните файл в UTF-8 и скажите в коде инициализации вот что:

Выделить код

Код:

MyOwnConverter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
        createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
MyOwnConverter.charset = "UTF-8";

А собственно в коде всюду замените words[ind] на MyOwnConverter.ConvertToUnicode(words[ind]). Мистика, да ;) ?

Отредактировано luitzen (04-05-2010 13:39:30)

Отсутствует

 

№160504-05-2010 13:53:25

Fest0
Участник
 
Группа: Members
Зарегистрирован: 24-04-2010
Сообщений: 23
UA: Firefox 3.5

Re: Custom Buttons

luitzen пишет
Fest0 пишет

Какие-то проблемы с кодировкой( Пробовал сохранять тхт файл во всех кодировках, какие возможны, но проблема не решается, до поискового бара доходят только кракозябры (если слова на русском)...

Сохраните файл в UTF-8 и скажите в коде инициализации вот что:

Выделить код

Код:

MyOwnConverter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
        createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
MyOwnConverter.charset = "UTF-8";

А собственно в коде всюду замените words[ind] на MyOwnConverter.ConvertToUnicode(words[ind]). Мистика, да ;) ?

спасибо большое! Проблема решилась!

Отсутствует

 

№160605-05-2010 20:46:49

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

Re: Custom Buttons

Люди дайте кнопку которая сайт  который открыт добавляла в cookies исключение и разрешала Firefox принимать cookies с нево.

Отсутствует

 

№160706-05-2010 00:19:31

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

Re: Custom Buttons

bunda1

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

Выделить код

Код:

var Cc = Components. classes;
var Ci = Components. interfaces;

var loc = gBrowser. contentDocument. location;
var uri = makeURI (loc. href);
var host;
try
{
    host = uri. host;
} catch (e) {}
if (!host)
    return;

var pm = Cc ["@mozilla.org/permissionmanager;1"].
     getService (Ci. nsIPermissionManager);

var notPermissed = true;

var enumerator = pm. enumerator;
var np;
while (enumerator. hasMoreElements ())
{
    np = enumerator. getNext (). QueryInterface (Ci. nsIPermission);
    if ((np. type == "cookie") && (np. host == host))
    {
        alert ("aleready permissed");
        np. capability = pm. ALLOW_ACTION;
        notPermissed = false;
        break;
    }
}

if (notPermissed)
{
    host = (host. charAt (0) == ".")? host. substring (1, host. length): host;
    uri = makeURI ("http://" + host);
    pm. add (uri, "cookie", pm. ALLOW_ACTION);
}


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

Отсутствует

 

№160806-05-2010 00:33:36

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Custom Buttons

bunda1 пишет

Люди дайте кнопку которая сайт  который открыт добавляла в cookies исключение и разрешала Firefox принимать cookies с нево.

Показать исключения cookies (текущий хост будет уже введен, но нужно будет выбрать действие):

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

Выделить код

Код:

// chrome://browser/content/preferences/privacy.js
// gPrivacyPane.showCookieExceptions()
var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
    .getService(Components.interfaces.nsIStringBundleService)
    .createBundle("chrome://browser/locale/preferences/preferences.properties");
var host = "";
if(["view-source:", "about:", "chrome:", "resource:", "javascript:", "data:"].indexOf(content.location.protocol) == -1)
    try { host = content.location.host; }
    catch(e) {}
var params = { blockVisible   : true,
               sessionVisible : true,
               allowVisible   : true,
               prefilledHost  : host,
               permissionType : "cookie",
               windowTitle    : bundle.GetStringFromName("cookiepermissionstitle"),
               introText      : bundle.GetStringFromName("cookiepermissionstext") };
var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
    .getService(Components.interfaces.nsIWindowMediator)
    .getMostRecentWindow("Browser:Permissions");
if(win)
    win.focus();
else
    window.openDialog("chrome://browser/content/preferences/permissions.xul", "_blank", "", params);

ЛКМ – разрешить
СКМ – показать исключения
ПКМ – запретить
Код для секции «инициализация»:

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

Выделить код

Код:

const pType = "cookie";
const pm = Components.interfaces.nsIPermissionManager;
const cp = Components.interfaces.nsICookiePermission;

this.onclick = this.oncontextmenu = function(e) {
    var but = e.button;
    var type = e.type;
    if(type == "click" && but == 0)
        addPermission(pm.ALLOW_ACTION);
    else if(type == "click" && (but == 1 || but == 0 && (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey)))
        openCookiesPermissions();
    else if(but == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey) {
        if(type == "click")
            addPermission(pm.DENY_ACTION);
        else if(type == "contextmenu") {
            e.preventDefault();
            e.stopPropagation();
        }
    }
};

function openCookiesPermissions() {
    // chrome://browser/content/preferences/privacy.js
    // gPrivacyPane.showCookieExceptions()
    var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
        .getService(Components.interfaces.nsIStringBundleService)
        .createBundle("chrome://browser/locale/preferences/preferences.properties");
    var params = { blockVisible   : true,
                   sessionVisible : true,
                   allowVisible   : true,
                   prefilledHost  : getHost(),
                   permissionType : "cookie",
                   windowTitle    : bundle.GetStringFromName("cookiepermissionstitle"),
                   introText      : bundle.GetStringFromName("cookiepermissionstext") };
    var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
        .getService(Components.interfaces.nsIWindowMediator)
        .getMostRecentWindow("Browser:Permissions");
    if(win)
        win.focus();
    else
        win = window.openDialog("chrome://browser/content/preferences/permissions.xul", "_blank", "", params);

    var keypressHandler = function(e) {
        if(e.keyCode == e.DOM_VK_ESCAPE)
            win.close();
    };
    win.addEventListener("keypress", keypressHandler, false);
    win.addEventListener("unload", function _unl(e) {
        var win = e.target.defaultView;
        if(win !== win.top || e.target.location.protocol != "chrome:")
            return;
        win.removeEventListener(e.type, _unl, false);
        win.removeEventListener("keydown", keypressHandler, false);
    }, false);
}

function addPermission(capability) {
    // capability:
    //  pm.DENY_ACTION
    //  cm.ACCESS_SESSION
    //  pm.ALLOW_ACTION

    var host = getHost();
    if(!host)
        return;

    var pm = Components.classes["@mozilla.org/permissionmanager;1"]
        .getService(Components.interfaces.nsIPermissionManager);

    var enumerator = pm.enumerator;
    while(enumerator.hasMoreElements()) {
        var permission = enumerator.getNext()
            .QueryInterface(Components.interfaces.nsIPermission);
        if(permission.type == pType && permission.host == host && permission.capability == capability)
            return;
    }

    var uri = Components.classes["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService)
        .newURI("http://" + host, null, null);
    pm.add(uri, pType, capability);
}

function getHost() {
    if(["view-source:", "about:", "chrome:", "resource:", "javascript:", "data:"].indexOf(content.location.protocol) == -1)
        try { return content.location.host; }
        catch(e) {}
    return "";
}

Не так давно работало. =)

Добавлено 06-05-2010 00:33:59
P.S. Долго собирался. =)

Отредактировано Infocatcher (06-05-2010 00:34:48)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№160906-05-2010 08:02:21

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

Re: Custom Buttons

Anton

Infocatcher

Tо, что нужно! Cпасибо большое.

Отсутствует

 

№161006-05-2010 09:55:09

W@ld_Lii
Участник №315
 
Группа: Members
Зарегистрирован: 26-04-2009
Сообщений: 306
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Вот можно использовать в качестве иконки coookies.png - это печенька:)

А можно сделать такую кнопку:
ЛКМ - копирование URL текущей страницы в буфер обмена
ПКМ - переход на главную страницу сайта (т.е. переход со страницы типа http://www.example.com/example/page на http://www.example.com/)?


Браузер должен сам решать свои проблемы, а не возлагать их на пользователей. Minor

Отсутствует

 

№161106-05-2010 20:23:03

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Custom Buttons

W@ld_Lii пишет

ЛКМ - копирование URL текущей страницы в буфер обмена
ПКМ - переход на главную страницу сайта (т.е. переход со страницы типа http://www.example.com/example/page на http://www.example.com/)?

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

Выделить код

Код:

this.onclick = this.oncontextmenu = function(e) {
    if(e.type == "click" && e.button == 0) {
        Components.classes["@mozilla.org/widget/clipboardhelper;1"]
            .getService(Components.interfaces.nsIClipboardHelper)
            .copyString(content.location.href);
    }
    else if(e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey) {
        if(e.type == "click") {
            content.location.pathname = "";
        }
        else if(e.type == "contextmenu") {
            e.preventDefault();
            e.stopPropagation();
        }
    }
};

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№161206-05-2010 21:49:29

W@ld_Lii
Участник №315
 
Группа: Members
Зарегистрирован: 26-04-2009
Сообщений: 306
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Infocatcher, огромное спасибо!


Браузер должен сам решать свои проблемы, а не возлагать их на пользователей. Minor

Отсутствует

 

№161307-05-2010 10:20:59

Kemerover
The function under construction
 
Группа: Members
Откуда: the middle of Great Russia
Зарегистрирован: 04-07-2009
Сообщений: 13
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

А можно ли как-нибудь сделать, чтобы там js работал? И что для этого мне придётся делать

Отсутствует

 

№161407-05-2010 16:27:07

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

Re: Custom Buttons

Kemerover

А можно ли как-нибудь сделать, чтобы там js работал?

Если под "работой js" подразумевается запуск javascript:xxx - букмарклетов, то вот здесь: http://custombuttons.mozdev.org/drupal/ … let-button есть кнопка для создания кнопок-букмарклетов.


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

Отсутствует

 

№161510-05-2010 12:50:13

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

Re: Custom Buttons

Всем привет!
Скажите пожалуйста, возможно ли создать кнопку, которая бы переходила по ссылке (прописанной внутри кнопки, допустим yandex.ru), дожидалась полной загрузки страницы и спускалась вниз страницы (как по кнопке end на клавиатуре)?
Спасибо за ответы!

Отсутствует

 

№161610-05-2010 16:32:40

Eskimo
Участник
 
Группа: Members
Зарегистрирован: 20-05-2009
Сообщений: 355
UA: Minefield 3.7

Re: Custom Buttons

Ребят я в кнопко-деланье совершенно ничего не понимаю, поэтому прошу вас помочь.
Можно ли  вот этой кнопкой заменить стандартную кнопку Personal Menu

Заранее очень благодарен за помощь!

Отсутствует

 

№161710-05-2010 17:27:26

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

Re: Custom Buttons

2okkamas_knife
Спасибо, но в таком варианте какие-то проблемы, пару раз нажимаю на кнопку и все дальнейшие залипают внизу страницы, в т.ч. открытые просто так...
А через листенер сильно сложно сделать?

Отсутствует

 

№161810-05-2010 17:37:08

Eskimo
Участник
 
Группа: Members
Зарегистрирован: 20-05-2009
Сообщений: 355
UA: Minefield 3.7

Re: Custom Buttons

okkamas_knife
Да, Вы меня правильно поняли. Но есть одно "но"... Если менять кнопку непосредственно в расширении (заменить в .xpi), то кнопка выглядит некорректно. В идеале она должна быть на подобии вкладки, на деле же она не изменяет свой размер и отображает только часть картинки в кнопке. С помощью Stylish лучшего результата добиться не удалось.

Если Вы подскажете в какую сторону копать, буду очень благодарен!

Отсутствует

 

№161910-05-2010 18:39:03

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

Re: Custom Buttons

Mits

Код

Выделить код

Код:

var url = "http://www.yandex.ru";

var scroller =
{
    br: null,
    
    scrollDown: function (doc)
    {
        var dv = doc. defaultView;
        dv. scrollTo (0, doc. height);
    },
    
    handleEvent: function (event)
    {
        if (event. originalTarget. nodeName != "#document")
            return;
        this. br. removeEventListener ("load", this, true);
        this. scrollDown (this. br. contentDocument);
    },
    
    loadURL: function ()
    {
        var doc = gBrowser. contentDocument;
        if (url == doc. location. href)
        {
            this. scrollDown (doc);
        }
        else
        {
            var tab = gBrowser. mCurrentTab;
            this. br = gBrowser. getBrowserForTab (tab);
            this. br. addEventListener ("load", this, true);
            loadURI (url);
        }
    }
};

scroller. loadURL (url);


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

Отсутствует

 

№162010-05-2010 18:53:09

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

Re: Custom Buttons

Eskimo

С помощью Stylish лучшего результата добиться не удалось.

Может быть, в соседней теме: Stylish что-нибудь подскажут ?

Отредактировано Anton (10-05-2010 18:53:47)


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

Отсутствует

 

№162110-05-2010 19:43:01

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

Re: Custom Buttons

Спасибо большое! Отлично работает!
А кнопку, нажатие на которую приравнивалась к нажатию "отмена" или "нет" на всех всплывающих окнах возможно сделать? Спасибо за отзывчивость!

Отсутствует

 

№162210-05-2010 20:01:09

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

Re: Custom Buttons

Mits пишет

А кнопку, нажатие на которую приравнивалась к нажатию "отмена" или "нет" на всех всплывающих окнах возможно сделать?

Скорее всего, нет.


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

Отсутствует

 

№162310-05-2010 21:37:11

Eskimo
Участник
 
Группа: Members
Зарегистрирован: 20-05-2009
Сообщений: 355
UA: Minefield 3.7

Re: Custom Buttons

okkamas_knife
Дело в том что с Custom Buttons (кнопки Personal Menu можно взять со страницы этого расширения на addons.mozilla) у меня ничего толкового тоже не вышло... так же небольшая кнопка и в ней часть нужной картинки

Отсутствует

 

№162411-05-2010 00:44:25

Eskimo
Участник
 
Группа: Members
Зарегистрирован: 20-05-2009
Сообщений: 355
UA: Minefield 3.7

Re: Custom Buttons

okkamas_knife
Хорошо, спрошу в теме Stylish. Спасибо большое!

Отсутствует

 

№162511-05-2010 20:43:13

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

Re: Custom Buttons

okkamas_knife

если твоей сборкe Firefox Portable - кнопка  Список вкладок-перемещение нажать пункт списка  вкладок рядом с кнопкой появляется маленький белый  квадратик, как это убрать

Отсутствует

 

Board footer

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