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

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

№410102-06-2012 17:07:37

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

Re: Custom Buttons

Kamui пишет

Уточню, это происходит на google images

Судя по chrome://browser/content/nsContextMenu.js из 15.0a1

Выделить код

Код:

// See if the user clicked on an image.
      if (this.target instanceof Ci.nsIImageLoadingContent &&
          this.target.currentURI) {
        this.onImage = true;

        var request =
          this.target.getRequest(Ci.nsIImageLoadingContent.CURRENT_REQUEST);
        if (request && (request.imageStatus & request.STATUS_SIZE_AVAILABLE))
          this.onLoadedImage = true;
        if (request && (request.imageStatus & request.STATUS_LOAD_COMPLETE))
          this.onCompletedImage = true;

        this.mediaURL = this.target.currentURI.spec;
      }

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

Выделить код

Код:

// Based on code from chrome://browser/content/nsContextMenu.js (Firefox 15.0a1)
function reloadImage(img) {
    if(!(img instanceof Components.interfaces.nsIImageLoadingContent) || !img.currentURI)
        return;
    urlSecurityCheck(img.currentURI.spec,
                     gBrowser.contentPrincipal,
                     Components.interfaces.nsIScriptSecurityManager.DISALLOW_SCRIPT);
    img.forceReload();
}
function parseWin(win) {
    Array.forEach(win.frames, parseWin);
    Array.forEach(win.document.images, reloadImage);
}
parseWin(content);

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

Отсутствует

 

№410202-06-2012 17:29:52

Чайник
Участник
 
Группа: Members
Зарегистрирован: 15-04-2008
Сообщений: 268
UA: Firefox 12.0

Re: Custom Buttons

Почему же у меня не работает? Нигде... :(

Отсутствует

 

№410302-06-2012 18:26:49

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Aurora 14.0

Re: Custom Buttons

Чайник пишет

Почему же у меня не работает? Нигде... :(

Кнопка догружает только недогруженные картинки, полностью загруженные у меня не перезагружает, что наверно и не должна делать, так как код взят из chrome://browser/content/nsContextMenu.js

Отсутствует

 

№410402-06-2012 22:50:38

Чайник
Участник
 
Группа: Members
Зарегистрирован: 15-04-2008
Сообщений: 268
UA: Firefox 12.0

Re: Custom Buttons

Ну я же не зря спрашивал > пост  №4552 :)

А как эта кнопка работает? Должна ли она перезагружать нормально загруженные картинки?

Отсутствует

 

№410503-06-2012 19:48:13

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

Re: Custom Buttons

okkamas_knife пишет

Кто знает помогите советом и кодом
короче есть такая штука как тробблер, В ФФ он только и умеет крутиться а в симанки по клику по нему он открывает страницу загрузки симанки.
Для симанковцев]ну и чтоб два раза не вставать как сделать кнопочку закрытия на каждой вкладке в симанке? seatabx не пашет на последней даже после поправки инсталл рдф. есть какието решения?на амо глушняк.

Где у симанки тробблер, на табе?

Можно закривать таб двойним кликом:

Выделить код

Код:

// Двойной клик левой кнопкой на табе, закрыть страницу.
(function () {
if (this.dblclickClose) return;
this.dblclickClose = true;
//...
gBrowser.mTabContainer.addEventListener("dblclick", function(event){
if (event.target.localName == 'tab' && event.button == 0){
    event.preventDefault();
    event.stopPropagation();
    //закрыть страницу
    gBrowser.removeCurrentTab();
}
 }, false);
})();

Или можно сделать кликом на иконку таба.

Отредактировано bunda1 (03-06-2012 20:37:30)

Отсутствует

 

№410603-06-2012 20:56:58

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

Re: Custom Buttons

Выделить код

Код:

document.getElementById("navigator-throbber").setAttribute("tooltiptext", "Поиск выделенного текста/из буфера");
document.getElementById("navigator-throbber").setAttribute("onclick", "event.stopPropagation(); handleURLBarCommand('none', event);");

или

Выделить код

Код:

document.getElementById("navigator-throbber").setAttribute("tooltiptext", "Поиск выделенного текста/из буфера");
document.getElementById("navigator-throbber").addEventListener("click", function(event) {
if (event.button !== 0) return;
event.preventDefault();
event.stopPropagation();
handleURLBarCommand('none', event);
}, false);

Я твой троблер не нашел не могу проверить.

Отредактировано bunda1 (03-06-2012 21:04:15)

Отсутствует

 

№410706-06-2012 12:53:02

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 13.0

Re: Custom Buttons

После обновления до FF13 отвалилась вот такая кнопка (мод кнопки "Автовыделение" с поддержкой выделения нескольких слов):

Автовыделение+ (multiword)

Выделить код

Код:

/*Initialization Code*/


// Кнопка для автовыделения заранее введенного текста с поддержкой нескольких слов

// настройка функций кликов мыши (Mouse Click settings)
this.onclick = function(event) {
    if(event.button == 0) {
        // Действие при клике ЛКМ
        switchHighlight(event);
    };
    
    if(event.button == 1) {
        // Действие при клике СКМ
        HighlightAdd(event);
    }

    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
     // Действие при клике ПКМ без модификаторов
     // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
     // clear preference
     prefs.setCharPref("Auto.Highlight.value","");
     prefs.setBoolPref("Auto.Highlight",1);
     switchHighlight(event);
     custombuttons.alertSlide("Автовыделение", "Значение сброшено");
    };
    
};


// Объявляем 'clipboard','storage'
var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
storage = globalStorage[document.domain]


// подсказка
this.showHighlightAdd = function() {
  //getting prefs Unicode value
  var HighlightValue = prefs.getComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString).data;
  var text = "ЛКМ =  Bключить/выключить\nСКМ = Добавить текст \nПКМ = Сбросить";
  var L_text = "Выделяемое:  ";
  this.tooltipText = this.label +"\n" + text +"\n\n"+ L_text + HighlightValue;
}
this.setAttribute("onmouseover", "this.showHighlightAdd()");


// Стоп, при открытии настройки панелей
this.onDestroy = function(reason) {
  //....
  if (reason == "constructor") storage['run'] = 'stop'
  if (reason == "destructor")  delete storage['run']
}


// проверить наличие строк в about:config и создать если не существует (Add preferences)
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
var f;
try{
    f = prefs.getBoolPref("Auto.Highlight");
}
catch(e){
    prefs.setBoolPref("Auto.Highlight", true);
    prefs.setCharPref("ui.textHighlightBackground", "#ef0fff");   // http://coloria.net/bonus/colornames.htm
    HighlightAdd(event);
}


// Авто выделение, добавить текст
function HighlightAdd(event){
        // Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
// setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
       // read from selected
       var text = document.commandDispatcher.focusedWindow.getSelection();
       if (text != '')
       {
       str.data = text;
       }
       else
       {
       
    // read from Clipboard
    //str.data = readFromClipboard();
       
 // read from popup promtBox
       var SURL = custombuttons.promptBox("Автовыделение", "Bведите текст:", "");
       if (SURL[0] == false) return;
       else
       str.data = [SURL[1]];
       };

       // setting prefs Unicode value
       prefs.setComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString, str);
       // getting prefs Unicode value
       var Avalue = prefs.getComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString).data

       // Sliding alert
       if (Avalue == "")
       {
       custombuttons.alertSlide("Автовыделение", "Нет данных для обработки");
       }
    else
       {
       custombuttons.alertSlide("Автовыделение", Avalue);
       prefs.setBoolPref("Auto.Highlight",true);
       ToggleImage(event);
       Highlight(event);
       }

        // run auto Highlight
        Highlight(event);
};


// Авто выделение, включить
function switchHighlight(event){
       // toggle preference
       var s = "Auto.Highlight";
       custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
       // toggle image
       ToggleImage(event);
       // run auto Highlight
        Highlight(event);
};


// Изменить иконку кнопки
var button = this;
function ToggleImage(event){
// toggle button image
if (custombuttonsUtils. getPrefs ("Auto.Highlight", true))
{
button.image="data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD+//4B////APX69AV9vWaPVJsR9GabDPiQrDGn6OzRG////wD+/v0B////AP///gL///0B////AP///wD///8A////AP3+/gP///8ActGnhRyqVP83q0r8PqMu/kqZDf9yoh7Wu8t8YNjan07m4bM9+ffqCf///wD///4B////AP///wD8/v8C//7/AOL5/A4d1NrUFc/G/yHEov0qt3b/NKtM/UGeHv9WlAD/eJcB/peZAP+nphzH5+bAIP///wD+/v8A/fz/A/3+/wH///8A5/b+CyG8/c4Jz/z/ENfm/RrLuf8nu4b/M61S/UGgJvtbnBH8fqAQ/IKXAP+lrjax/v76AP7+/gH///8A7fD9CNni/Bb///8Ac7/4dQCn9/8P1f38ENbh/xzIsf8ouoD/NKtL/0GeHf9enA79dJ0M/4yiGOrx8d0c/f3/AJaT7105O+TOHTjn5GuP8n7u9v4AOK/3ugW/+/8N2vX9FdDN/yDDoP8rtXD/N6c//kqdGPpcnBD/dqIZ3/L05BCVht5rLhXE/zMj0f0nKuL/EkHp7+Dm/Bq64/wyBKz4/w/W/fwP1+X/Gsq4/ya+kPwwsWH+M58o/jSSAP+exXNr////AFkwrepXMrT8SjPG9icg2v8xRunM8fX+BfL5/gcdpPbOBMH8/w/b9vwX0dH+FcKk/yS3evFZum2rpdOaUPj79gD///8BZy6R8lsqn/8/Hbb/NSfS6MPE+DDj7PwI8vP9ALHe/DQXs/nWAs/9/wDV5v9C1Mmwye/jI////wD///8B////AP7+/gG/oclQgVSpuIhuy4/OyfIheHbpgx815+4vZ+7C2uf8Fuz5/we+8P83y/f8Jvb9/QL///8A8vv4CZPUpGO837Y5////AP///wD6+f0D////AIVy1IsgEsz/Lini+Qow5/+Gq/Vq////AM/t/Ruo6/4+6/z9C////wB817lzE6dQ/zGeJfOs05lI/Pv9Bf///wDXy+knTCOu7UYvxf89KtH4Fhrh/4yb9GTB3/sjCJH07QC9+v854Pio9///AFHOsrMktnX/NKtO/0KoPsz9/P0D////AMey2ElWJaL/UzG4+k0vv/4sGs/5vLn1Mkl68aoLcvD/G6j4+QDH+v+29f8xY9zUkA/Eo/8swpH3JL6M/P38/gL///8A08DcNF8kkPlgNar9Sh2m/3texp/i4PsPKTDk7hxP7P8eefD7Apb1/47Z/E2x8vw2AMrv/wXN5/8O0Ova////AP///wH8+/wAoHe0iWkukfN+U66v8+31C9PL7iA3H8n6KSzi/yNF6/sMVe3/rc35PP///wB/zv1qM7L7u53e/j7///8A////AP///wD7+fsB6NzqD/n2+gT///8A7uf0EV80rONFKcD/LCTU/zxC47/u8P4D////Af7+/gH//f4A///+AP///wD///8A//7/AP79/gL///8A/v7/Av38/gT///8AsZHEZmAplv5gOrPQzMbwKf///wD9/f4C/f//A/7//wL9/v8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
}
else
{
button.image="data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
}
  };
// Стоп, при открытии настройки панелей(stop, if onDestroy)
// запускаем функцию
if (storage['run'] !== 'stop'){ToggleImage(event); };


// Автоматически выделить заранее введенные слова (auto Highlight words permanent)
function Highlight(event) {

// hide Highlight
gFindBar._highlightDoc(false);

// auto Highlight
if (custombuttonsUtils. getPrefs ("Auto.Highlight", true))
{
// getting prefs Unicode value
var value = prefs.getComplexValue("Auto.Highlight.value",
      Components.interfaces.nsISupportsString).data;

// Highlight
    // createMsg("value").aMsg(value);
// var wordsToSearch = [value];
var wordsToSearch = value.split(" ");
    // createMsg("word").aMsg(wordsToSearch);
while (wordsToSearch. length > 0)
{
    gFindBar. _findField. value = wordsToSearch. shift ();
    gFindBar. toggleHighlight (true);
}

}
 }; 
  
// Стоп, при открытии настройки панелей(stop, if onDestroy)
// запускаем функцию
if (storage['run'] !== 'stop') (function () {
// добавляем обработчики
gBrowser.tabContainer.addEventListener("TabSelect", Highlight, false);
document.addEventListener( "DOMContentLoaded", Highlight, false);
})();


Консоль ошибок выдает следующее:

Метка времени: 06.06.2012 11:49:07
Ошибка: globalStorage is not defined
Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button17@init
Строка: 35

т.е. ссылается на строку:  storage = globalStorage[document.domain]
Это как-то лечится? Помогите пожалуйста!

Отсутствует

 

№410806-06-2012 19:03:44

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

Re: Custom Buttons

Inko7

:)

Автовыделение+ (multiword)

Выделить код

Код:

// Кнопка для автовыделения заранее введенного текста с поддержкой нескольких слов.............................................


//Объявляем 'prefs', 'clipboard' ,'alertsService', 'button'.............................................
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);
var button = this;


// настройка функций кликов мыши (Mouse Click settings)
this.onclick = function(event) {
    if(event.button == 0) {
        // Действие при клике ЛКМ
        switchHighlight(event);
    };
    
    if(event.button == 1) {
        // Действие при клике СКМ
        HighlightAdd(event);
    }

    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
    // Действие при клике ПКМ без модификаторов
    // Блокируем контекстное меню при клике ПКМ без модификаторов
    event.preventDefault();
    event.stopPropagation();
    // clear preference
    prefs.setCharPref("Auto.Highlight.value","");
    prefs.setBoolPref("Auto.Highlight",1);
    switchHighlight(event);
    //Всплывающая подсказка
    alertsService.showAlertNotification(button.image, "Автовыделение", "Значение сброшено", false, "", null, ""); 
    }
};



// подсказка
this.showHighlightAdd = function() {
  //getting prefs Unicode value
  var HighlightValue = prefs.getComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString).data;
  var text = "ЛКМ =  Bключить/выключить\nСКМ = Добавить текст \nПКМ = Сбросить";
  var L_text = "Выделяемое:  ";
  this.tooltipText = this.label +"\n" + text +"\n\n"+ L_text + HighlightValue;
}
this.setAttribute("onmouseover", "this.showHighlightAdd()");



//Стоп, при открытии настройки панелей....................................................
if (window.Inko7_AutoHighlightStop) return;



// проверить наличие строк в about:config и создать если не существует (Add preferences)
var f;
try{
    f = prefs.getBoolPref("Auto.Highlight");
}
catch(e){
    prefs.setBoolPref("Auto.Highlight", true);
    prefs.setCharPref("ui.textHighlightBackground", "#ef0fff");
    HighlightAdd(event);
}


// Авто выделение, добавить текст
function HighlightAdd(event){
        // Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
// setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
       // read from selected
       var text = document.commandDispatcher.focusedWindow.getSelection();
       if (text != '')
       {
       str.data = text;
       }
       else
       {
    
    // read from Clipboard
    //str.data = readFromClipboard();
       
 // read from popup promtBox
       var SURL = custombuttons.promptBox("Автовыделение", "Bведите текст:", "");
       if (SURL[0] == false) return;
       else
       str.data = [SURL[1]];
       };

       // setting prefs Unicode value
       prefs.setComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString, str);
       // getting prefs Unicode value
       var Avalue = prefs.getComplexValue("Auto.Highlight.value",Components.interfaces.nsISupportsString).data

       // Sliding alert
       if (Avalue == "")
       {
       //Всплывающая подсказка
       alertsService.showAlertNotification(button.image, "Автовыделение", "Нет данных для обработки", false, "", null, ""); 
       }
    else
       {
       //Всплывающая подсказка
       alertsService.showAlertNotification(button.image, "Автовыделение", Avalue, false, "", null, ""); 
       prefs.setBoolPref("Auto.Highlight",true);
       ToggleImage(event);
       Highlight(event);
       }
       // run auto Highlight
       Highlight(event);
};



// Авто выделение, включить
function switchHighlight(event){
       // toggle preference
       var s = "Auto.Highlight";
       custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
       // toggle image
       ToggleImage(event);
       // run auto Highlight
        Highlight(event);
};



// Изменить иконку кнопки.................................................................
function ToggleImage(event){
if (custombuttonsUtils. getPrefs ("Auto.Highlight", true))
{
button.image="data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD+//4B////APX69AV9vWaPVJsR9GabDPiQrDGn6OzRG////wD+/v0B////AP///gL///0B////AP///wD///8A////AP3+/gP///8ActGnhRyqVP83q0r8PqMu/kqZDf9yoh7Wu8t8YNjan07m4bM9+ffqCf///wD///4B////AP///wD8/v8C//7/AOL5/A4d1NrUFc/G/yHEov0qt3b/NKtM/UGeHv9WlAD/eJcB/peZAP+nphzH5+bAIP///wD+/v8A/fz/A/3+/wH///8A5/b+CyG8/c4Jz/z/ENfm/RrLuf8nu4b/M61S/UGgJvtbnBH8fqAQ/IKXAP+lrjax/v76AP7+/gH///8A7fD9CNni/Bb///8Ac7/4dQCn9/8P1f38ENbh/xzIsf8ouoD/NKtL/0GeHf9enA79dJ0M/4yiGOrx8d0c/f3/AJaT7105O+TOHTjn5GuP8n7u9v4AOK/3ugW/+/8N2vX9FdDN/yDDoP8rtXD/N6c//kqdGPpcnBD/dqIZ3/L05BCVht5rLhXE/zMj0f0nKuL/EkHp7+Dm/Bq64/wyBKz4/w/W/fwP1+X/Gsq4/ya+kPwwsWH+M58o/jSSAP+exXNr////AFkwrepXMrT8SjPG9icg2v8xRunM8fX+BfL5/gcdpPbOBMH8/w/b9vwX0dH+FcKk/yS3evFZum2rpdOaUPj79gD///8BZy6R8lsqn/8/Hbb/NSfS6MPE+DDj7PwI8vP9ALHe/DQXs/nWAs/9/wDV5v9C1Mmwye/jI////wD///8B////AP7+/gG/oclQgVSpuIhuy4/OyfIheHbpgx815+4vZ+7C2uf8Fuz5/we+8P83y/f8Jvb9/QL///8A8vv4CZPUpGO837Y5////AP///wD6+f0D////AIVy1IsgEsz/Lini+Qow5/+Gq/Vq////AM/t/Ruo6/4+6/z9C////wB817lzE6dQ/zGeJfOs05lI/Pv9Bf///wDXy+knTCOu7UYvxf89KtH4Fhrh/4yb9GTB3/sjCJH07QC9+v854Pio9///AFHOsrMktnX/NKtO/0KoPsz9/P0D////AMey2ElWJaL/UzG4+k0vv/4sGs/5vLn1Mkl68aoLcvD/G6j4+QDH+v+29f8xY9zUkA/Eo/8swpH3JL6M/P38/gL///8A08DcNF8kkPlgNar9Sh2m/3texp/i4PsPKTDk7hxP7P8eefD7Apb1/47Z/E2x8vw2AMrv/wXN5/8O0Ova////AP///wH8+/wAoHe0iWkukfN+U66v8+31C9PL7iA3H8n6KSzi/yNF6/sMVe3/rc35PP///wB/zv1qM7L7u53e/j7///8A////AP///wD7+fsB6NzqD/n2+gT///8A7uf0EV80rONFKcD/LCTU/zxC47/u8P4D////Af7+/gH//f4A///+AP///wD///8A//7/AP79/gL///8A/v7/Av38/gT///8AsZHEZmAplv5gOrPQzMbwKf///wD9/f4C/f//A/7//wL9/v8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
}
else
{
button.image="data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
}
  };
ToggleImage(event);



// Автоматически выделить заранее введенные слова (auto Highlight words permanent)
function Highlight(event) {

// hide Highlight
gFindBar._highlightDoc(false);

// auto Highlight
if (custombuttonsUtils. getPrefs ("Auto.Highlight", true))
{
// getting prefs Unicode value
var value = prefs.getComplexValue("Auto.Highlight.value",
      Components.interfaces.nsISupportsString).data;

// Highlight
// createMsg("value").aMsg(value);
// var wordsToSearch = [value];
var wordsToSearch = value.split(" ");
    // createMsg("word").aMsg(wordsToSearch);
while (wordsToSearch. length > 0)
{
    gFindBar. _findField. value = wordsToSearch. shift ();
    gFindBar. toggleHighlight (true);
}
 }
  }; 
  
// Стоп, при открытии настройки панелей
// запускаем функцию
if (!window.Inko7_AutoHighlightStop) (function () {
//добавляем обработчики для табов........
gBrowser.tabContainer.addEventListener("TabSelect", function(event){
//стоп, если страница загружается
if (gBrowser.mCurrentTab.hasAttribute("busy")) return; 
Highlight(event) }, false);
gBrowser.addEventListener("pageshow", function(event){
//стоп, если открыть другие владки
if (event.target.location.href !== getBrowser().currentURI.spec) return;
Highlight(event) }, true);
})();


//устанавливаем флаг
window.Inko7_AutoHighlightStop = true;

Отсутствует

 

№410906-06-2012 20:25:46

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 13.0

Re: Custom Buttons

bunda1
Спасибо! Вроде всё отлично! :beer:

Отсутствует

 

№411009-06-2012 03:23:40

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 507
UA: Firefox 13.0

Re: Custom Buttons

bunda1 здравствуйте.
Есть ли кнопка при нажатии на которую открывается списочек about:config, about:home и прочие aboutы

Появилась проблема с кнопкой Экспорт всех кнопок в HTML. Почему то при сохранении выдаёт окошко что Мои кнопки 9-Jun-2012  2:11.html не допустимое имя файла.

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

Выделить код

Код:

var name, image, uri;
var bu = "";
var buts = document. getElementsByTagName ("toolbarbutton");
for (var i = 0; i < buts. length; i++)
{
    if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0)
    {
        name = buts [i]. name;
        image = buts [i]. image || buts [i]. cbStdIcon;
        uri = buts [i]. URI;
        butmp = bu;
urltmp ="<img src=" + image + ">&nbsp<a href=" + uri + ">" + name +"</a><br>\n";
bu = butmp + urltmp;
//alert(name);

    }
};
butmp = bu;
bu = butmp + "<hr>";
function setText (doc, nodeName, text, make_CDATASection)
{
    var node = doc. getElementsByTagName (nodeName) [0], cds;
    if (!node)
        return;
    if (make_CDATASection)
    {
        try
        {
            cds = doc. createCDATASection (text || "");
        }
        catch (e)
        {
            cds = doc. createTextNode (text || "");
        }
        node. appendChild (cds);
    }
    else
    {
        node. textContent = text;
    }
}
var buts, doc, name, image, uri, mode, code, initCode, accelkey, help;
buts = custombuttons. palette. getElementsByTagName ("toolbarbutton");
for (var i = 0; i < buts. length; i++)
{
    if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0)
    {
        name = buts [i]. getAttribute ("label");
        image = buts [i]. getAttribute ("image") || buts [i]. getAttribute ("cb-stdicon");
        mode = buts [i]. getAttribute ("cb-mode");
        code = buts [i]. getAttribute ("cb-oncommand");
        initCode = buts [i]. getAttribute ("cb-init");
        accelkey = buts [i]. getAttribute ("cb-accelkey");
        help = buts [i]. getAttribute ("Help") || buts [i]. getAttribute ("help") || "";
        doc = document. implementation. createDocument ("", "", null);
        doc. async = false;
        doc. load ("chrome://custombuttons/content/nbftemplate.xml");
        setText (doc, "name", name, false);
        setText (doc, "mode", mode, false);
        setText (doc, "image", image, true);
        setText (doc, "code", code, true);
        setText (doc, "initcode", initCode, true);
        setText (doc, "accelkey", accelkey, true);
        setText (doc, "help", help, true);
        var ser = new XMLSerializer ();
        var data = ser. serializeToString (doc);
        uri = "custombutton://" + escape (data);
        //alert (uri);
        butmp = bu;
urltmp ="<img src=" + image + ">&nbsp<a href=" + uri + ">" + name +"</a><br>\n";
bu = butmp + urltmp;
    }
}


var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
uc. charset = "utf-8";
bu = uc. ConvertFromUnicode (bu);
var head = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n";
var fileend = "\n</body>\n</html>"
var htmlSource = head + bu + fileend;

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"]
          .createInstance(nsIFilePicker);
fp.init(window, "", fp.modeSave);
var t=new Date();
var y=1900+t.getYear();
var min=t.getMinutes(); if (min<10){min="0"+min};
var h=t.getHours();
var m=t.getMonth();switch(m){case 0: m="Jan";break;case 1: m="Feb";break;case 2: m="Mar";break;case 3: m="Apr";break;case 4: m="May";break;case 5: m="Jun";break;case 6: m="Jul";break;case 7: m="Aug";break;case 8: m="Sep";break;case 9: m="Oct";break;case 10: m="Nov";break;default: m="Dec";}
var d=t.getDate();
var curdate=d+"-"+m+"-"+y+"  "+h+":"+min;
fp.defaultString = "Мои кнопки "+curdate+".html";
fp.appendFilters(fp.filterHTML);
fp.appendFilters(fp.filterAll);
if(fp.show() == fp.returnCancel) return;

var stream = Components.classes['@mozilla.org/network/file-output-stream;1']
                 .createInstance(Components.interfaces.nsIFileOutputStream);

stream.init(fp.file, 0x02|0x20|0x08, 0666, 0);
stream.write(htmlSource, htmlSource.length);
stream.close();

Отсутствует

 

№411109-06-2012 04:32:34

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

Re: Custom Buttons

skynet281978 пишет

bunda1 здравствуйте.
Есть ли кнопка при нажатии на которую открывается списочек about:config, about:home и прочие aboutы

Вроде нет такой кнопки, могу сделать ? Но думаю некоторые aboutы безполезны например:
about:robots
about:credits
about:license
about:rights
about:logo

skynet281978 пишет

Появилась проблема с кнопкой Экспорт всех кнопок в HTML. Почему то при сохранении выдаёт окошко что Мои кнопки 9-Jun-2012  2:11.html не допустимое имя файла.

У меня my_cbuttons_2012-9-Jun_3-42 и все работает.

Отредактировано bunda1 (09-06-2012 04:46:44)

Отсутствует

 

№411209-06-2012 04:49:10

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

Re: Custom Buttons

okkamas_knife Вчера 17:28:10

Выделить код

Код:

document.getElementById("dtaCtxDTA-direct").doCommand();

document.getElementById("dtaCtxTDTA-direct").doCommand();

Но это работает только если нужные пункты есть в контекстном меню на странице.
Или тут Gallery Grabber | custombuttons

skynet281978 пишет

Появилась проблема с кнопкой Экспорт всех кнопок в HTML. Почему то при сохранении выдаёт окошко что Мои кнопки 9-Jun-2012  2:11.html не допустимое имя файла.

var curdate=d+"-"+m+"-"+y+"  "+h+":"+min;

Отредактировано bunda1 (09-06-2012 05:02:45)

Отсутствует

 

№411309-06-2012 09:00:43

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 14.0

Re: Custom Buttons

okkamas_knife пишет

пункты меню добавляются копированием строчки(там всё написано)

В случае с abouts - неизящно. Плюс я понимаю, конечно, что кто-то, может быть, планирует сидеть на одной какой-то версии до скончания века, но не все же так делают - выйдет новая версия Fx, в ней окажутся новые about-страницы, придется их снова добавлять руками.
Список abouts можно получить так (примерно как в view-source:about:about):

Выделить код

Код:

var abouts=[];
var ios = Services.io;
for (var cid in Cc)
{
  var result = cid.match(/@mozilla.org\/network\/protocol\/about;1\?what\=(.*)$/);
  if (!result) continue;
  var aboutType = result[1];
  var contract = "@mozilla.org/network/protocol/about;1?what=" + aboutType;
  try
  {
    var am = Cc[contract].getService(Ci.nsIAboutModule);
    var uri = ios.newURI("about:"+aboutType, null, null);
    var flags = am.getURIFlags(uri);
    if (!(flags & Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT))
      abouts.push(uri.spec);
  } catch (e) {}
}
abouts.sort();
Services.console.logStringMessage(abouts.join("\n"));

А у меня вопрос к авторам: с 14-й версии использование восьмеричных литералов стало deprecated (см., например, тут). В результате сейчас в консоли я имею достаточно большое каличество предупреждений типа

Предупреждение SyntaxError: octal literals and octal escape sequences are deprecated
Источник: chrome://custombuttons/content/overlay.js
Строка: 968, символ: 22
Исходный код:
fis.init( file,0x01, 00004, null);

Нельзя ли это в каком-то обозримом будущем поправить? Консолью приходится пользоваться часто, и чем в ней чище, тем лучше. Я могу в установленном у меня Console2 заблокировать сообщения от домена custombuttons - но тогда я не получу и сообщений об ошибках, если такие возникнут.

Отсутствует

 

№411409-06-2012 11:07:51

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

Re: Custom Buttons

hydrolizer пишет

использование восьмеричных литералов

Причем при загрузке через mozIJSSubScriptLoader ругаться началось намного раньше.
Я вот одного не понимаю, что предлагается писать при создании папки, например?
parseInt("755", 8)
или же
493 // счастливой отладки!

Для убирания предупреждений можно выключить javascript.options.strict.


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

Отсутствует

 

№411509-06-2012 11:41:05

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 14.0

Re: Custom Buttons

Infocatcher пишет

Для убирания предупреждений можно выключить javascript.options.strict

Я в курсе, но я сам часто использую именно включенный strict. Мда, какое-то несуразное нововведение...
P.S. Может быть, предополагалось теперь вместо восьмеричных литералов использовать 16-ричные? Все-таки триады в тетрады в уме переводить намного проще, чем из 10-й в 8/16-ричную. Что-то типа

file.create(Ci.nsIFile.DIRECTORY_TYPE, 0x1FF);

вместо

file.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

Отредактировано hydrolizer (09-06-2012 11:51:30)

Отсутствует

 

№411609-06-2012 19:24:48

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 507
UA: Firefox 13.0

Re: Custom Buttons

okkamas_knife, bunda1 спасибо за помощь с Экспорт всех кнопок в HTML.

bunda1 думаю лучше иметь одну кнопу about чем несколько, поэтому сделал проще :)
изменил кнопку about:config на about:about :)
теперь все aboutы в одной кнопке :)

Отредактировано skynet281978 (09-06-2012 19:25:24)

Отсутствует

 

№411709-06-2012 19:39:20

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

Re: Custom Buttons

skynet281978 пишет

bunda1 думаю лучше иметь одну кнопу about чем несколько, поэтому сделал проще :)
изменил кнопку about:config на about:about :)
теперь все aboutы в одной кнопке :)

Хитро придумано!

Отсутствует

 

№411809-06-2012 20:30:07

LongLogin
Участник
 
Группа: Members
Зарегистрирован: 30-01-2011
Сообщений: 2083
UA: Firefox 12.0

Re: Custom Buttons

поэтому сделал проще
изменил кнопку about:config на about:about
теперь все aboutы в одной кнопке

и-хихи, можно закладку сделать about:about, а также about:config

Пандёнок пишет

LongLogin
Я так и делаю.

отож

voqabuhe пишет

В кнопку Session Stacked Bookmarks можно засунуть  все эбауты, получится выпадающий список с ними.

можно папку создать в закладках с выпадающим списком

Отредактировано LongLogin (09-06-2012 20:55:14)

Отсутствует

 

№411909-06-2012 20:48:17

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Firefox 13.0

Re: Custom Buttons

LongLogin
Я так и делаю.

Отсутствует

 

№412009-06-2012 20:51:01

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Nightly 16.0

Re: Custom Buttons

skynet281978 пишет

изменил кнопку about:config на about:about :)
теперь все aboutы в одной кнопке :)

В кнопку Session Stacked Bookmarks можно засунуть  все эбауты, получится выпадающий список с ними. :)

Отсутствует

 

№412118-06-2012 23:45:12

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

Re: Custom Buttons

перенесено отс юда

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

voqabuhe ,А мне с будильником несподручно - свет включать надо чтобы посмотреть, да и места для него на столе нет :lol: , а часики (FlipClock) в нижнем правом углу браузера  очень удобны - кинул взгляд и сразу точное  время видно :)

okkamas_knife пишет

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

в инициализацию

Выделить код

Код:

var _this = this;

var fontcolora="#148800";//цвет
var blabla;
var canvas = document. createElementNS ("http://www.w3.org/1999/xhtml", "canvas");
canvas. setAttribute ("id", "canvas");
canvas. setAttribute ("style", "min-width:20px;width:45px;max-width:45px;min-height:24px;height:24px;max-height:24px;");
canvas. setAttribute ("width", "45");
canvas. setAttribute ("height", "24");
_this. appendChild (canvas);
_this. image = "data:";
_this. setAttribute ("class", "");
var pn = _this. parentNode;
var ns = _this. nextSibling;
var button = pn. removeChild (this);
if (ns)
    pn. insertBefore (button, ns);
else
    pn. appendChild (button);
    
 function draw() {
 
 var ctx = canvas.getContext('2d');
  ctx.save();
  ctx. clearRect (0, 0, 50, 24);
  ctx.restore();
  var width = canvas.width;
  var height = canvas.height;
  var ctx = canvas.getContext('2d');
  ctx.save();
  ctx.translate(3,18); // смещение
  ctx.fillStyle = fontcolora;
  ctx.mozTextStyle = "14pt sans serif"; //шрифт
    ctx.fillText(blabla,0,0);

  ctx.restore();
}   
    
function gettime(){ 
var t=new Date();
var min=t.getMinutes(); if (min<10){min="0"+min};
var h=t.getHours(); if (h<10){h="0"+h};
blabla=h+":"+min;
draw();
;}

gettime();
clearInterval(intervalID);
intervalID = setInterval(gettime, 60000); //время обновления в мс (1сек = 1000)

а панель задач всегда чтоль скрыта?

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

okkamas_knife ,Да Добавлено Сегодня 07:42:24в принципе часы можно и кнопкой реализовать.выглядит неплохо ... а что, отображение секунд так сильно загружают браузер ?  Вообще-то уже пробовал как-то пару кнопочек, но там величина цифр была слишком маленькая и с настройкой  вида и цвета шрифта муторно было бы разбираться
.... а вот эти > Clock кроме наличия секунд ещё и при наведении курсора показывают день недели, число, месяц и год  .... только там цифры мелкие

okkamas_knife пишет

а тебе так важны секунды?просто не вижу смысла тратить ресурсы машины на всякую ерунду.

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

okkamas_knife, Конечно такой уж жизненно важной необходимости в этом нет, но всё же на восприятие времени влияет, да и  бывает необходимо знать - сейчас начало минуты или конец

okkamas_knife пишет

это всё также элементарно реализуется попроси кого нибуть в теме кнопок допилитьмне просто лень да и голова другим забита чтоб переключаться. я те часики за неск минут слепил из кнопки погоды выкинув лишнее и вставив всего

несколько строчек

Выделить код

Код:

function gettime(){ 
var t=new Date();
var min=t.getMinutes(); if (min<10){min="0"+min};
var h=t.getHours(); if (h<10){h="0"+h};
blabla=h+":"+min;
draw();
;}

gettime();
clearInterval(intervalID);
intervalID = setInterval(gettime, 60000); //время обновления в мс (1сек = 1000)

а тебе так важны секунды?просто не вижу смысла тратить ресурсы машины на всякую ерунду.

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

okkamas_knife, Конечно такой уж жизненно важной необходимости в этом нет, но всё же на восприятие времени влияет, да и  бывает необходимо знать - сейчас начало минуты или конец

okkamas_knife пишет
Выделить код

Код:

добавляем после
var min=t.getMinutes(); if (min<10){min="0"+min};
это
var sec=t.getSeconds(); if (sec<10){sec="0"+sec};

и правим blablba=h+":"+min+":"+sec

скорость обновления выставляем в 1 секунду
ну а размеры кнопочки смотри вверху и подстраивай как нужно. там увидишь где width итп
до кучи
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
чтоб понять что какая функция выдаёт делай так

var t = new Date();
var a=t.getFullYear();
alert(a)

bunda1 пишет

Крошка Ру Или вот немецкие часики для панели дополнений :)
594e41600173.jpg
 
В любую Custom Buttons кнопку, в инициализацию.

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

Выделить код

Код:

function Clock() {
    var days = ["So","Mo", "Di", "Mi", "Do", "Fr", "Sa"];
    var months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
    var D = new Date();
    var day = days[D.getDay()];
    var month = months[D.getMonth()];
    var year = D.getFullYear();
    var hours = D.getHours();
    var min = D.getMinutes();
    var sec = D.getSeconds(); 
    var Time = ((hours < 10) ? "0" : "") + hours;
    Time += ((min < 10) ? ":0" : ":") + min + ((sec < 10) ? ":0" : ":") + sec;
    Time += " Uhr";
    var date = day + ", " + ((D.getDate()<10) ? "0" : "") + D.getDate() + "."+ month + "." + year;
    var timestr = date + " - " + Time;
    var status = document.getElementById("statusbar-clock-display");
    status.setAttribute("value", timestr);
    var clockstyle = "padding-top: 2px;"
    if (hours < 6 || hours > 22) {
      clockstyle += "color: #ff0000;";
      }
     else {
       clockstyle += "color: #000000;";
     }
     status.setAttribute("style", clockstyle);
     // Timeout variabel - damit Umschalten zur vollen Minute:
     setTimeout(function() { Clock() }, 1000); //(60- sec)*1000)
  }

var ClockStatus = document.getElementById("addon-bar").lastChild;
var ClockLabel = document.createElement("label");
ClockLabel.setAttribute("id", "statusbar-clock-display");
ClockLabel.setAttribute("class", "statusbarpanel-text");
// *vor* dem letzten Kindelement (s.o.) einfuegen - damit ist Uhr immer ganz rechts:
ClockStatus.parentNode.insertBefore(ClockLabel, ClockStatus.previousSibling);
Clock();

Добавлено 18-06-2012 23:54:47
okkamas_knife, запутался что перед/после чего и куда добавлять :blush: :dumb: :)

bunda1, сейчас попробую :)

Добавлено 19-06-2012 00:11:16
На этих цифры мелковаты по сравнению с FlipClock

f63425780bb2663aaaaf38a882d1c7f3.png

и часами,предложенными okkamas_knife

в инициализацию

Выделить код

Код:

var _this = this;

var fontcolora="#148800";//цвет
var blabla;
var canvas = document. createElementNS ("http://www.w3.org/1999/xhtml", "canvas");
canvas. setAttribute ("id", "canvas");
canvas. setAttribute ("style", "min-width:20px;width:45px;max-width:45px;min-height:24px;height:24px;max-height:24px;");
canvas. setAttribute ("width", "45");
canvas. setAttribute ("height", "24");
_this. appendChild (canvas);
_this. image = "data:";
_this. setAttribute ("class", "");
var pn = _this. parentNode;
var ns = _this. nextSibling;
var button = pn. removeChild (this);
if (ns)
    pn. insertBefore (button, ns);
else
    pn. appendChild (button);
    
 function draw() {
 
 var ctx = canvas.getContext('2d');
  ctx.save();
  ctx. clearRect (0, 0, 50, 24);
  ctx.restore();
  var width = canvas.width;
  var height = canvas.height;
  var ctx = canvas.getContext('2d');
  ctx.save();
  ctx.translate(3,18); // смещение
  ctx.fillStyle = fontcolora;
  ctx.mozTextStyle = "14pt sans serif"; //шрифт
    ctx.fillText(blabla,0,0);

  ctx.restore();
}   
    
function gettime(){ 
var t=new Date();
var min=t.getMinutes(); if (min<10){min="0"+min};
var h=t.getHours(); if (h<10){h="0"+h};
blabla=h+":"+min;
draw();
;}

gettime();
clearInterval(intervalID);
intervalID = setInterval(gettime, 60000); //время обновления в мс (1сек = 1000)


189a7668e7ba601c11cbb7da49a8e8b2.png

и строчка слишком длинная - лучше если дата появляется во всплывающей подсказке :)  как у этих

d0ebe8651e4570d7ffd49d33ddbec247.png
dd6549c3c95ac5ce36cc13cea8018c68.png

Отредактировано Крошка Ру (19-06-2012 00:16:39)

Отсутствует

 

№412219-06-2012 02:45:33

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

Re: Custom Buttons

ты не морочь людям голову а попробуй научиться сам...

okkamas_knife, Да я и не морочу - люди сами же предлагают ;) :angel:

...там несложно методом тыка и копипасты ты вполне в состоянии сам соорудить такие часы которые ТЕБЕ нужны.
попробуй для начала сделать то что я написал и получить часы с секундами
потом можно будет добавить дату во всплывающей подсказке(это тоже просто если не я то кто нибудь да подскажет).
надо не давать рыбу а показать как её ловить. тогда будешь есть ту рыбу которую захочешь а не которую дал прохожий.

Обеими руками "за" - полностью согласен :)

------
Кстати , такая идея - Менеджер - графический редактор кнопок  :sick:
Что думает на этот счёт почтеннейшая публика ?

Отредактировано Крошка Ру (19-06-2012 02:45:57)

Отсутствует

 

№412319-06-2012 03:35:07

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

Re: Custom Buttons

okkamas_knife ,bunda1 ,Код  подправил :)

e4ed53c61997af496ffaa54e8ccd256e.png

в инициализацию

Выделить код

Код:

/*Initialization Code*/

this.setAttribute("style", " -moz-appearance: none; font-size: 12pt !important; color: #000000 !important; background-color:  !important; border-width: 0px !important; border-color: #4444aa !important;-moz-border-radius: 4px;  margin-left: 5px !important; margin-top: 7px !important; margin-bottom: 7px !important; padding-bottom: 0px !important; padding-left: 2px !important; padding-right: 2px !important; padding-top: 0px !important; ");

this.style.opacity = "0.99";

this.onmouseover = function(event)
{
  var ttTime = new Date();
  
        var p = (ttTime. getHours () < 12)? "AM": "PM";
        var time = ttTime. toLocaleFormat ("%I:%M:%S ") + p;
        var date = ttTime. toLocaleFormat ("%A, %B %d, %Y");
        this.tooltipText =  date ;  
  
  /*
  var mydatestr = ttTime.toDateString();
  var myday = mydatestr.substring(0,3);
  var mymonth = mydatestr.substring(4,7);
  var mydate = mydatestr.substring(7,11);
  var myyear = mydatestr.substring(10,mydatestr.length);    
  this.tooltipText = myday + mydate + mymonth + myyear;
  */
}  

// Comment out these next two lines to start as a twelve hour clock
 var TwelveHourClock = 0;

var timesign = ":";
var timetick = ";"
var timetick1 = ":";
var timetick2 = ".";

this.leftclick = function(event)
{
  if(TwelveHourClock == 0)
  {
     TwelveHourClock = 12;
  }
  else
  {
     TwelveHourClock = 0;
  }
}


var beginTime = new Date();

var now = new Date();
var offset = now.getTimezoneOffset();
var myGMToffset = (offset/60)*-1;


function count(t) {

  var millisecond = t.getTime();
  var hour = Math.floor(millisecond % 86400000 / 3600000) + myGMToffset;
  if(TwelveHourClock == 12)
  {  
    if(hour >= 13)
    {
      hour = hour - TwelveHourClock ; 
    }
    else
    {
      morneve = "AM";
    }
    
    if(hour >= 12) 
    {morneve = "PM"; 
    };
  }
  else
  { 
    if(hour >= 24) {hour = hour - 24}
  }  
  var minute = Math.floor(millisecond % 3600000 / 60000);
  var second = Math.floor(millisecond % 3600000 % 60000 / 1000);
  hour = (hour < 10 ? "0" : "") + hour;
  minute = (minute < 10 ? "0" : "") + minute;
  second = (second < 10 ? "0" : "") + second;
  if(TwelveHourClock == 0){timesign = timetick1}else{timesign = timetick2}
  return hour + timesign + minute + timesign + second;
}
setInterval(function(that) {

  
  var currentTime = new Date();
  that.label = count(currentTime);
}, 10, this);
var ios = Components.classes["@mozilla.org/network/io-service;1"].
  getService(Components.interfaces.nsIIOService);
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].
  getService(Components.interfaces.nsIStyleSheetService);
var css = new String();
css += "#" + this.id + " .toolbarbutton-icon { display: none !important; }\n";
css += "#" + this.id + " .toolbarbutton-text { display: -moz-box !important; }\n";
css += "#" + this.id + "                     { -moz-box-orient: horizontal !important; }";
var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null);
// comment out the next line to disable style
if (!sss.sheetRegistered(uss, sss.USER_SHEET)) sss.loadAndRegisterSheet(uss, sss.USER_SHEET);
this.onDestroy = function(reason) {
  if (reason == "update") {
    var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null);
    if (sss.sheetRegistered(uss, sss.USER_SHEET)) sss.unregisterSheet(uss, sss.USER_SHEET);
  }
  if (reason == "delete") {
    var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null);
    if (sss.sheetRegistered(uss, sss.USER_SHEET)) sss.unregisterSheet(uss, sss.USER_SHEET);
  }
}



  this. onclick = function (event) { custombuttons. gQuot. mHandler (event); }
  this. ondblclick = function (event) { custombuttons. gQuot. mHandler (event); }
  


this.setAttribute('author','squeaky,Barbiegirl,morat');
this.setAttribute('version','20110408.2.5');
this.setAttribute('homepage', 'http://custombuttons.mozdev.org/drupal/content/button-clock');


но как буковки во всплывающем окошечке увеличить - не знаю :blush: :angel:


а можно поподробнее?
что это? для чего? и как это видится в плане интерфейса?

okkamas_knife, Только в общих чертах представляю себе - у каждой кнопки своя вкладка настроек  где можно менять параметры не залезая в её код , сохранять выбранные кнопки в файл , может даже функции конструктора - возможность собрать кнопку используя готовые шаблоны :)
И ещё для тех кодов, которые предлагается помещать в любую кнопку - чтобы не запутаться можно их  упорядочить (объединить?) каким-то образом посредством менеджера.
Ещё бы  файл userChrome.css через графический интерфейс редактировать ....

Отредактировано Крошка Ру (19-06-2012 04:16:41)

Отсутствует

 

№412419-06-2012 03:49:56

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 14.0

Re: Custom Buttons

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

но как буковки во всплывающем окошечке увеличить - не знаю

Подсказка, заданная через атрибут tooltipText, отображается в стандартном системном тултипе и стандартным системным стилем. Поэтому вариантов два: убирать системную отрисовку у стандартного тултипа, либо использовать для тултипа xul:tooltip (который легко стайлится). Второе - намного проще (и правильнее).
И да, для подобных задач лучшие собаководы рекомендуют использовать не window.setInterval, а nsITimer с соответствующим типом работы, заданным при инициализации.

Отредактировано hydrolizer (19-06-2012 03:54:14)

Отсутствует

 

№412519-06-2012 04:03:44

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

Re: Custom Buttons

Подсказка, заданная через атрибут tooltipText, отображается в стандартном системном тултипе и стандартным системным стилем. Поэтому вариантов два: убирать системную отрисовку у стандартного тултипа, либо использовать для тултипа xul:tooltip (который легко стайлится). Второе - намного проще (и правильнее).
И да, для подобных задач лучшие собаководы рекомендуют использовать не window.setInterval, а nsITimer с соответствующим типом работы, заданным при инициализации.

hydrolizer ,Спасибо, осталось только всё это понять :angel: :)

молодец!:)

okkamas_knife ,Спасибо :angel: :)

Отсутствует

 

Board footer

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