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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№432608-07-2012 22:48:27

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

Re: Custom Buttons

Infocatcher
Значит сохранить как временный файл и открыть, спасибо.

Отсутствует

 

№432708-07-2012 23:58:19

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

Re: Custom Buttons

bunda1 пишет
Kamui пишет

только сейчас при копировании фавиконки в base64, также открывается новая вкладка с фавиконкой, раньше этого не было и в принципе не нужно.

Save(Firefox 3.6 +)

Еще раз благодарю, сейчас все как надо :) и еще, приятную мелочь в виде фавиконки во всплывающей подсказке вы сейчас добавили или это было давно?

Отредактировано Kamui (09-07-2012 00:03:56)

Отсутствует

 

№432809-07-2012 00:29:10

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

Re: Custom Buttons

Kamui пишет

приятную мелочь в виде фавиконки во всплывающей подсказке вы сейчас добавили или это было давно?

Сейчас добавил.

Отсутствует

 

№432909-07-2012 00:34:35

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

Re: Custom Buttons

bunda1 пишет

Kamui пишет: приятную мелочь в виде фавиконки во всплывающей подсказке вы сейчас добавили или это было давно?
Сейчас добавил.

Это где такое?

Добавлено 09-07-2012 00:40:59
bunda1
Ещё по кнопке Save, можешь сделать, чтобы при сохранение в текстовой файл была возможность текст не замешать, а добавлять к существующему?

9.Save the selection to a txt file - добавляет вверху странички ссылку на её адрес, сохраняет выделенный текст в txt файл,
10.Save all to a txt file - добавляет вверху странички ссылку на её адрес, сохраняет весь текст  на странице в txt файл,

Отредактировано voqabuhe (09-07-2012 00:40:59)

Отсутствует

 

№433009-07-2012 01:02:14

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

Re: Custom Buttons

voqabuhe пишет

Это где такое?

3.Favicon copied to base64-  сохраняет иконку сайта в буфере обмена как код base64.

voqabuhe пишет

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

Я попробую.

Отредактировано bunda1 (09-07-2012 01:02:33)

Отсутствует

 

№433109-07-2012 01:16:09

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

Re: Custom Buttons

bunda1
можно в кнопке Memory Monitor зарезервировать за монитором 4 цифры в строке?
получается если например сначала 80 МБ памяти, затем 150, то иконки слева от монитора сдвигаются влево.
получается эффект дёргания иконок туда-сюда, что не симпатично :)
а 4 цифры... ну, вдруг кому-то повезёт и у него за гиг перевалит память :) а так хватит до 9999 МБ :)
вот код этой кнопки с учётом доработок которые я просил ранее:

скрытый текст
/*Initialization Code*///Memory Monitor..................
var ucjs_MemoryMonitor = {

  _interval: 2000, //ms
  _maxMemory: 1500,
  _prefix: "MB", //B, KB, MB, GB
  _dPrefix: true,
 
  interval: null,
  init: function () {
 
    var memoryPanel = document.createElement("statusbarpanel");
    memoryPanel.id = "MemoryDisplay";
    memoryPanel.setAttribute("label", this.setPrefix(this._dPrefix));
    var urlbar = document.getElementById("urlbar-icons");
    var go = urlbar.lastChild;
    urlbar.insertBefore(memoryPanel, go)
    this.start();
    this.interval = setInterval(this.start, this._interval);
  },

  addFigure: function (str) {
    var num = new String(str).replace(/,/g, "");
    while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
    return num;
  },

  restart: function () {
    var appStartup = Components.interfaces.nsIAppStartup;
    Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(appStartup).quit(appStartup.eRestart | appStartup.eAttemptQuit);
  },

  getSize: function (mem, flag) {
    var pre = 1;
    switch (this._prefix) {
      case 'KB':
        pre = 1024;
        break;
      case 'MB':
        pre = 1024 * 1024;
        break;
      case 'GB':
        pre = 1024 * 1024 * 1024;
        break;
    }
    if (flag) return mem * pre;
    else return ucjs_MemoryMonitor.addFigure(Math.round(mem / pre));
  },

  setPrefix: function (flag) {
    return (flag) ? " " + this._prefix : "";
  },

  start: function () {
    try {
      const Cc = Components.classes;
      const Ci = Components.interfaces;
      var mgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      var e = mgr.enumerateReporters();
      var gMemReporters = {};
      while (e.hasMoreElements()) {
        var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
        gMemReporters[mr.path] = mr;
      }
      var workingSet = gMemReporters["resident"].amount;
      var commitmentSize = gMemReporters["private"].amount;
      var gfxImage = gMemReporters["gfx-surface-image"].amount;
      var restartMemory = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true);
      var memoryPanel = document.getElementById("MemoryDisplay");
      memoryPanel.setAttribute("label", ucjs_MemoryMonitor.getSize(workingSet) + ucjs_MemoryMonitor.setPrefix(ucjs_MemoryMonitor._dPrefix));
      memoryPanel.style.borderBottom = "0px";
memoryPanel.style.borderTop = "0px";
if (workingSet > restartMemory) {
        ucjs_MemoryMonitor.restart();
      }
    } catch (e) {
      clearInterval(ucjs_MemoryMonitor.interval);
    }
  }
}
//Запускаем функцию
// выходим, если функция уже выполнялась
if (!document.getElementById("MemoryDisplay")) ucjs_MemoryMonitor.init();

Отредактировано skynet281978 (09-07-2012 01:16:57)

Отсутствует

 

№433209-07-2012 01:20:39

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

Re: Custom Buttons

skynet281978
Я не забыл это, но пока не знаю как сделать :/

Отсутствует

 

№433309-07-2012 01:27:17

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

Re: Custom Buttons

bunda1 пишет

но пока не знаю как сделать :/

Можно добавить min-width в стилях.


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

Отсутствует

 

№433409-07-2012 01:28:17

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

Re: Custom Buttons

Infocatcher пишет

Можно добавить min-width в стилях.

Сейчас попробую.

Добавлено 09-07-2012 01:32:19
Как узнать ширину элемента? :/

Выделить код

Код:

var q = document.getElementById("MemoryDisplay");
alert(q.clientWidth);

Отредактировано bunda1 (09-07-2012 01:39:16)

Отсутствует

 

№433509-07-2012 01:40:52

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

Re: Custom Buttons

bunda1 пишет

3.Favicon copied to base64-  сохраняет иконку сайта в буфере обмена как код base64.

Так это же и раньше было.

bunda1 пишет

Я попробую.

Это будет просто супер, и можно было бы отказаться от stf :: Add-ons for Firefox

Отсутствует

 

№433609-07-2012 01:54:01

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

Re: Custom Buttons

bunda1 пишет

Как узнать ширину элемента? :/

Зачем в данном случае ее узнавать?
Все равно для посимвольной точности надо использовать моноширинный шрифт и какой-нибудь ch для указания минимальной ширины.
У XUL-элементов есть elt.boxObject.width

Выделить код

Код:

var memoryPanel = document.createElement("statusbarpanel");
    memoryPanel.id = "MemoryDisplay";
    memoryPanel.style.minWidth = "4em";

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

Отсутствует

 

№433709-07-2012 02:17:41

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

Re: Custom Buttons

Infocatcher
Если

Выделить код

Код:

memoryPanel.style.minWidth = "4em";

то Memory Monitor на FF16 все равно передвигает другие иконки в адресной строке.
Если

Выделить код

Код:

memoryPanel.style.width = "57px";

то не передвигает другие иконки.
Странно однако.

Отредактировано bunda1 (09-07-2012 02:21:40)

Отсутствует

 

№433809-07-2012 02:27:01

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

Re: Custom Buttons

А можно как-то реализовать с помощью CB, чтобы диалоговые окна, например как здесь на форуме окно сообщающее о новых личных сообщениях, открывалось в новой вкладке, но при этом сохраняло свой размер?
как это реализовано в опере.
или как это сделать другим способом? если можно вообще.

Отсутствует

 

№433909-07-2012 02:27:19

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

Re: Custom Buttons

bunda1
Я ширину не проверял. :)
Вот так, например, работает:

Выделить код

Код:

var memoryPanel = document.createElement("statusbarpanel");
    memoryPanel.id = "MemoryDisplay";
    memoryPanel.style.minWidth = "5.5em";
    memoryPanel.style.textAlign = "right";

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

Отсутствует

 

№434009-07-2012 02:48:34

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

Re: Custom Buttons

Infocatcher
Спасибо, теперь работает.
Ну тогда другой вопрос, вот код который сохраняет страницу как PNG изображение.

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

Выделить код

Код:

//Save PNG......................................
var WebScreenShot= {
    capture : function(win, x, y, width, height, isCopy){
        var mainWindow = document.getElementById('main-window');
        var scrollbox = document.createElement('scrollbox');
        scrollbox.width = '1';
        scrollbox.height = '1';
        mainWindow.appendChild(scrollbox);
        var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
        canvas.style.display = 'inline';
        canvas.width = width;
        canvas.height = height;
        scrollbox.appendChild(canvas);

        var ctx = canvas.getContext("2d");
        ctx.clearRect(0, 0, width, height);
        ctx.save();
        ctx.scale(1.0, 1.0);
        ctx.drawWindow(win, x, y, width, height, "rgb(255,255,255)");
        ctx.restore();

        var url = canvas.toDataURL("image/png");
        const IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1']
           .getService(Components.interfaces.nsIIOService);
        url = IO_SERVICE.newURI(url, null, null);

        var fp = Components.classes['@mozilla.org/filepicker;1']
           .createInstance(Components.interfaces.nsIFilePicker);
        fp.init(window, "Save Screenshot As", fp.modeSave);
        fp.appendFilters(fp.filterImages);
        fp.defaultExtension = "png";
        fp.defaultString = win.document.title + ".png";
        if ( fp.show() == fp.returnCancel || !fp.file ) return;

        var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']
           .createInstance(Components.interfaces.nsIWebBrowserPersist);
        wbp.saveURI(url, null, null, null, null, fp.file);
        
        mainWindow.removeChild(scrollbox);
    },
        
    init : function(){
        document.getElementById('contentAreaContextMenu').addEventListener('popupshowing', this, false);
    },
};

//Save captureAll
this.captureAll ={
            init : function(){
        var win = content;
        WebScreenShot.capture(win, 0, 0, win.innerWidth + win.scrollMaxX, win.innerHeight + win.scrollMaxY);
    }};

//Save capturePage
this. capturePage ={
        init :function(){
        var win = content, doc = win.document, body = doc.body, html = doc.documentElement;
        var scrX = (body.scrollLeft || html.scrollLeft) - html.clientLeft;
        var scrY = (body.scrollTop || html.scrollTop) - html.clientTop;
        WebScreenShot.capture(win, scrX, scrY, win.innerWidth, win.innerHeight);
    }
      },

//Save WebScreenShotByClipping
this. WebScreenShotByClipping ={
    capture : WebScreenShot.capture,
    handleEvent : function(event){
        if (event.button != 0) return false;
        event.preventDefault();
        event.stopPropagation();
        switch(event.type){
            case 'mousedown':
                this.downX = event.pageX;
                this.downY = event.pageY;
                this.bs.left = this.downX + 'px';
                this.bs.top  = this.downY + 'px';
                this.body.appendChild(this.box);
                this.flag = true;
                break;
            case 'mousemove':
                if (!this.flag) return;
                this.moveX = event.pageX;
                this.moveY = event.pageY;
                if (this.downX > this.moveX) this.bs.left = this.moveX + 'px';
                if (this.downY > this.moveY) this.bs.top  = this.moveY + 'px';
                this.bs.width  = Math.abs(this.moveX - this.downX) + 'px';
                this.bs.height = Math.abs(this.moveY - this.downY) + 'px';
                break;
            case 'mouseup':
                this.uninit();
                break;
        }
    },
    init : function(){
        this.win = document.commandDispatcher.focusedWindow;
        if (this.win == window) this.win = content;
        this.doc = this.win.document;
        this.body = this.doc.body;
        if (!this.body instanceof HTMLBodyElement){
            alert("Can not capture.");
            return false;
        }
        this.flag = null;
        this.box = this.doc.createElement('div');
        this.bs = this.box.style;
        this.bs.border = '#0f0 dashed 2px';
        this.bs.position = 'absolute';
        this.bs.zIndex = '2147483647';
        this.defaultCursor = getComputedStyle(this.body, '').cursor;
        this.body.style.cursor = 'crosshair';
        this.doc.addEventListener('mousedown', this, true);
        this.doc.addEventListener('mousemove', this ,true);
        this.doc.addEventListener('mouseup', this ,true);
        this.doc.addEventListener('click', this, true);
    },
    uninit : function(){
        var pos = [this.win, parseInt(this.bs.left), parseInt(this.bs.top), parseInt(this.bs.width), parseInt(this.bs.height)];
        this.doc.removeEventListener('mousedown', this, true);
        this.doc.removeEventListener('mousemove', this, true);
        this.doc.removeEventListener('mouseup', this, true);
        this.doc.removeEventListener('click', this, true);
        this.body.style.cursor = this.defaultCursor;
        this.body.removeChild(this.box);
        this.capture.apply(this, pos);
    },
}
//Save WebScreenShotByClick
this.WebScreenShotByClick = {
    capture : WebScreenShot.capture,
    getPosition : function(){
        var html = this.doc.documentElement;
        var body = this.doc.body;
        var rect = this.target.getBoundingClientRect();
        return [
            this.win
            , Math.round(rect.left) + (body.scrollLeft || html.scrollLeft) - html.clientLeft
            , Math.round(rect.top) + (body.scrollTop || html.scrollTop) - html.clientTop
            , parseInt(rect.width)
            , parseInt(rect.height)
        ];
    },
    highlight : function(){
        this.orgStyle = this.target.hasAttribute('style')? this.target.style.cssText : false;
        this.target.style.cssText += 'outline: red 2px solid; outline-offset: 2px; -moz-outline-radius: 2px;';
    },
    lowlight : function(){
        if (this.orgStyle) this.target.style.cssText = this.orgStyle;
        else this.target.removeAttribute('style'); 
    },
    handleEvent : function(event){
        switch(event.type){
            case 'click':
                if (event.button != 0) return;
                event.preventDefault();
                event.stopPropagation();
                this.lowlight();
                var pos = this.getPosition();
                this.capture.apply(this, pos);
                this.uninit();
                break;
            case 'mouseover':
                if (this.target) this.lowlight();
                this.target = event.target;
                this.highlight();
                break;
        }
    },
    init : function(){
        this.win = content;
        this.doc = content.document;
        this.doc.addEventListener('mouseover', this, true);
        this.doc.addEventListener('click', this, true);
    },
    uninit : function(){
        this.doc.removeEventListener('mouseover', this, true);
        this.doc.removeEventListener('click', this, true);
    },
}
WebScreenShot.init();


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

Я думаю что в этом куске что то не так, но вот что? :blush:

Выделить код

Код:

var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']
           .createInstance(Components.interfaces.nsIWebBrowserPersist);
wbp.saveURI(url, null, null, null, null, fp.file);

Отредактировано bunda1 (09-07-2012 02:51:47)

Отсутствует

 

№434109-07-2012 02:58:16

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

Re: Custom Buttons

skynet281978 пишет

А можно как-то реализовать с помощью CB, чтобы диалоговые окна, например как здесь на форуме окно сообщающее о новых личных сообщениях, открывалось в новой вкладке, но при этом сохраняло свой размер?
как это реализовано в опере.
или как это сделать другим способом? если можно вообще.

Так это же нужно сделать полноценный MDI с вкладками.
Ну, то есть теоретически скорее можно, чем нет. Но это далеко не просто.

Нужно как-то превратить браузер, привязанный к вкладке, в окно. Или в настоящее зависимое окно (не создающее кнопку на панели задач), или в блок с изменяемыми размерами. В первом случае надо проверять, можно ли утащить <browser> в другое окно (или обратно). Может и нельзя. Во втором – реализовать изменение размеров. И нельзя будет утащить получившееся псевдоокно за пределы родительского окна. Хотя вот обещают, что в <panel> уже можно засовывать браузер.

И нужно как-то перехватить создание окна с заданием размеров. Возможно, есть только один способ – из открывающегося окна проверить, с какими параметрами оно было открыто, закрыть его и создать свое. А это и медленно, и могут быть нежелательные визуальные эффекты типа потери фокуса ввода.
Или переопределить на всех страницах функцию window.open(), только, скорее всего, факт подмены можно будет узнать со страницы (привет приватности) и возможны проблемы с безопасностью.

В общем, как-то слишком много возни по сравнению с пользой от реализации.
Хотя вот в Tile Tabs сделано нечто похожее. Возможно, с помощью того же механизма можно вывести один браузер поверх другого вместо плитки.
Так что есть смысл написать автору. :)

Добавлено 09-07-2012 03:01:06

bunda1 пишет

Я думаю что в этом куске что то не так, но вот что? :blush:

Проблема не в коде, а в его отсутствии, недо полагать. :)

Там уже есть data URI в виде строки:
var url = canvas.toDataURL("image/png");
Можно попробовать saveURL() или saveImageURL() из chrome://global/content/contentAreaUtils.js

Отредактировано Infocatcher (09-07-2012 03:01:06)


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

Отсутствует

 

№434209-07-2012 04:02:02

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

Re: Custom Buttons

Infocatcher
Извини я не правильно выразился, код Сегодня 01:48:34 без проблем сохраняет страницы как PNG изображение но это сохранение не отражается в менеджере загрузок, вот где проблема.
А вот открывать base64 в вкладке и потом сохранять как изображение не очень удобно.

Отсутствует

 

№434309-07-2012 04:34:49

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

Re: Custom Buttons

bunda1
Ну а я о чем?
В том работающем коде есть сохранение, но нет добавления в список загрузок.
А у функций из chrome://global/content/contentAreaUtils.js есть и то, и другое.

Вот простой вариант:

Выделить код

Код:

var url = canvas.toDataURL("image/png");
        /*
        const IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1']
           .getService(Components.interfaces.nsIIOService);
        url = IO_SERVICE.newURI(url, null, null);

        var fp = Components.classes['@mozilla.org/filepicker;1']
           .createInstance(Components.interfaces.nsIFilePicker);
        fp.init(window, "Save Screenshot As", fp.modeSave);
        fp.appendFilters(fp.filterImages);
        fp.defaultExtension = "png";
        fp.defaultString = win.document.title + ".png";
        if ( fp.show() == fp.returnCancel || !fp.file ) return;

        var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']
           .createInstance(Components.interfaces.nsIWebBrowserPersist);
        wbp.saveURI(url, null, null, null, null, fp.file);
        */
        saveImageURL(url, win.document.title + ".png");

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


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

Отсутствует

 

№434409-07-2012 04:36:23

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

Re: Custom Buttons

bunda1
я правильно понял, нужно строчки:
    memoryPanel.style.minWidth = "5.5em";
    memoryPanel.style.textAlign = "right";

прописать за строчками которые уже есть в кнопке:

    var memoryPanel = document.createElement("statusbarpanel");
    memoryPanel.id = "MemoryDisplay";

так?

Отсутствует

 

№434509-07-2012 04:49:26

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

Re: Custom Buttons

Infocatcher
Ну спасибо, ты гений. Извини за глупые вопросы.


skynet281978
За:

Выделить код

Код:

memoryPanel.style.borderBottom = "0px";
memoryPanel.style.borderTop = "0px";

+ рестарт

Отредактировано bunda1 (09-07-2012 04:50:37)

Отсутствует

 

№434609-07-2012 04:50:14

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

Re: Custom Buttons

Еще там стоит добавить обработку ошибок при невозможности сохранения.

Там бывают штуки вида

Error: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMCanvasRenderingContext2D.save]

Error: Component returned failure code: 0x8007000e (NS_ERROR_OUT_OF_MEMORY) [nsIDOMHTMLCanvasElement.height]

при больших размерах изображений.

Что-нибудь вроде

Выделить код

Код:

var ctx = canvas.getContext("2d");
        try {
            ctx.clearRect(0, 0, width, height);
            ctx.save();
            ctx.scale(1.0, 1.0);
            ctx.drawWindow(win, x, y, width, height, "rgb(255,255,255)");
            ctx.restore();
        }
        catch(e) {
            Components.utils.reportError(e);
            alert("Error:\n" + e);
            return;
        }

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

Отсутствует

 

№434709-07-2012 04:57:01

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

Re: Custom Buttons

Infocatcher
Ок, что мы без тебя бы делали.
Да большие страницы не сохраняет выбрасывает эту ошибку, интересно с в чем тут проблема.

Отсутствует

 

№434809-07-2012 05:08:08

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

Re: Custom Buttons

Infocatcher и bunda1
Спасибо вам обоим. Вы оба молодцы! :)

Отсутствует

 

№434909-07-2012 05:43:33

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

Re: Custom Buttons

bunda1 Мемори монитор: как варьировать расстояние между букв MB и разделителем справа? в кнопке или стилем?

Save кнопка: если открыть изображение во вкладке, то эта картинка отображается во вкладке как фавикон.
но скопировать to base64 не может, хотя как фавикон сохраняет.

Отредактировано skynet281978 (09-07-2012 06:34:54)

Отсутствует

 

№435009-07-2012 06:48:01

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

Re: Custom Buttons

voqabuhe пишет

Так это же и раньше было.

выделено красным
h_1341801968_6586435_183fb4deed.png

skynet281978
У меня копирует.

Отсутствует

 

Board footer

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