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

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

№1220123-09-2017 16:35:15

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Ultima2m пишет
difabor пишет

3. Скроллинг без модификатора и без включения/отключения скроллинга - в "коридорах":
а) в правом вертикальном коридоре шириной 20рх (у правого края рабочей области) - вертикальный скроллинг
в) в нижнем горизонтальном коридоре шириной 20рх (у нижнего края рабочей области) - горизонтальный скроллинг

Можно ли установить задержку на включение этой функции (~1 сек)?

Вам нужна просто задержка, или фильтрация?
То есть, чтобы если Вы заскочили в "коридор" и быстро выскочили, чтобы вообще не было скроллинга?
Задержку я сделал. В не e10s работает. Теперь работаю над фильтрацией.
Как это будет в e10s проверю позже, когда сделаю фильтрацию. В e10s для меня куча сюрпризов, так что за e10s пока не ручаюсь.
Пока что - дайте мне знать, что Вам надо.


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1220223-09-2017 17:46:16

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 582
UA: Firefox 52.0

Re: Custom Buttons

difabor пишет

Пока что - дайте мне знать, что Вам надо.

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

Отсутствует

 

№1220323-09-2017 19:03:43

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

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


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1220423-09-2017 20:52:53

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Получил фильтрацию. Думаю, что получилось даже лучше, чем ожидал: сам скроллинг работает без задержек, но требуется порог нахождения в коридоре ~1 секунду, чтобы был скроллинг. Работает и в e10s :)
Подробное описание я дал в №12199. Ничего практически не изменилось кроме того, что добавлена фильтрация и я расширил коридоры до 30рх - раз случайных залётов можно избежать - сам коридор может быть и шире. Кому не понравится - может изменить: это переменные v=30 и h=30 - отдельно задаётся ширина вертикального и горизонтального коридоров. Длительность порога тоже можно менять: D=999 -> можете назначить другую длительность.
Здесь я приведу только код:

скрытый текст
В инициализацию

скрытый текст
Если через адресную строку

Выделить код

Код:

var rv=-1,tL=600,tO=3000,D=999,pw=1,pE=0,c=1,m=9999999,v=30,h=30;
var B=0,mf,Mdn=[],EnS=[],V,H,X,Y;

function cM(n,m){var x=(Date.now()-B>99)?(n+1)%m:n;B=Date.now();return(x)}
function rM(n)  {var x=(Date.now()-B>99) ? -n : n; B=Date.now();return(x)}
function sp(base,pw) {return(base*Math.pow(Math.abs(base),pw))}

addEventListener('keydown',e=>(!e.ctrlKey && e.altKey && e.shiftKey &&
(((e.keyCode==54)&&(rv=rM(rv)))||(e.keyCode==53)&&(pw=cM(pw,3)))),0,window);

addEventListener("mousedown",(e)=>{if(Date.now()-B<99){B=Date.now();return}
  B=Date.now(); Mdn=[Date.now(),e.clientX,e.clientY,1];
  if(Date.now()-EnS[1]>tO){pE=EnS[0]; EnS[0]=0}}, false, gBrowser);

addEventListener("click",(e)=>{if(Date.now()-B<99) {B=Date.now();return}
  var udx=e.clientX-Mdn[1], udy=e.clientY-Mdn[2], trem=udx*udx+udy*udy;
  if (!e.button&&!e.altKey) {
    if (!e.ctrlKey&&!e.shiftKey&&(trem<9)&&(EnS[0]||pE)){EnS=[0,Date.now()]}
    if (!e.ctrlKey&&!e.shiftKey&&(Date.now()-Mdn[0]>tL))         {
                          EnS[1]=Date.now();if(trem<9)EnS[0]=1   }
    if ( e.ctrlKey&&!e.shiftKey&&(Date.now()-Mdn[0]>tL))
                                  custombuttons.editButton(this);
    if (!e.ctrlKey&& e.shiftKey&&(Date.now()-Mdn[0]>tL))gShowPopup(this);
  }  Mdn[3]=0; B=Date.now(); pE=0;}, false, gBrowser);

addEventListener("mousemove",(e)=>{
  H=content.innerWidth-h,V=content.innerHeight-v,mf=e.ctrlKey&&!e.shiftKey&&!e.altKey;
  if (gBrowser.selectedBrowser.matches(":hover")){
     if (mf||(((EnS[0]==1)&&(Date.now()-EnS[1]<=tO)) && (Mdn[3]==0))){
        (EnS=((Date.now()-EnS[1]<=tO)&&EnS[0])?[1,Date.now()]:[0,0]);
        content.scrollBy(rv*sp(e.movementX,pw),rv*sp(e.movementY,pw))}
     else { setTimeout(()=>{X=e.clientX;Y=e.clientY},D); //Filter
      if (e.clientX >H && X>H && e.clientY >v && e.clientY < V )
        /* Vertical   aisle */ content.scrollBy(0,rv*sp(e.movementY,pw));
      if (e.clientY >V && Y>V && e.clientX >h && e.clientX < H)
        /* Horizontal aisle */ content.scrollBy(rv*sp(e.movementY,pw),0);
      if (e.clientX<h&&X<h&&e.clientY<v&&Y<v)content.scrollBy(-m*c*rv,0);
      if (e.clientX<h&&X<h&&e.clientY>V&&Y>v)content.scrollBy( m*c*rv,0);
      if (e.clientX>H&&X>H&&e.clientY<v&&Y<v)content.scrollBy(0,-m*c*rv);
      if (e.clientX>H&&X>H&&e.clientY>V&&Y>V)content.scrollBy(0, m*c*rv);
}}},false,gBrowser);

Отредактировано difabor (23-09-2017 22:00:25)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1220523-09-2017 23:31:12

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

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


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1220623-09-2017 23:44:02

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

villa7 пишет

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

Исправил. Там была банальная описка - было e.movementY а должно было быть e.movementX

скрытый текст
В инициализацию

скрытый текст
Если через адресную строку

И ещё один момент: при большом зуме ощущаемая ширина коридора увеличивается, а при маленьком - уменьшается.
На самом деле она не изменяется, изменяется размер пикселя. Но ощутить это можно только при действительно больших и маленьких зумах.
При зуме 1.5 или 0.67 разница будет очень слабо ощутимой. Вот зум 300% или 30% - тогда да - можно ощутить.
Сто́ит ли делать поправку на зум или и так сойдёт?

Выделить код

Код:

var rv=-1,tL=600,tO=3000,D=999,pw=1,pE=0,c=1,m=9999999,v=30,h=30;
var B=0,mf,Mdn=[],EnS=[],V,H,X,Y;

function cM(n,m){var x=(Date.now()-B>99)?(n+1)%m:n;B=Date.now();return(x)}
function rM(n)  {var x=(Date.now()-B>99) ? -n : n; B=Date.now();return(x)}
function sp(base,pw) {return(base*Math.pow(Math.abs(base),pw))}

addEventListener('keydown',e=>(!e.ctrlKey && e.altKey && e.shiftKey &&
(((e.keyCode==54)&&(rv=rM(rv)))||(e.keyCode==53)&&(pw=cM(pw,3)))),0,window);

addEventListener("mousedown",(e)=>{if(Date.now()-B<99){B=Date.now();return}
  B=Date.now(); Mdn=[Date.now(),e.clientX,e.clientY,1];
  if(Date.now()-EnS[1]>tO){pE=EnS[0]; EnS[0]=0}}, false, gBrowser);

addEventListener("click",(e)=>{if(Date.now()-B<99) {B=Date.now();return}
  var udx=e.clientX-Mdn[1], udy=e.clientY-Mdn[2], trem=udx*udx+udy*udy;
  if (!e.button&&!e.altKey) {
    if (!e.ctrlKey&&!e.shiftKey&&(trem<9)&&(EnS[0]||pE)){EnS=[0,Date.now()]}
    if (!e.ctrlKey&&!e.shiftKey&&(Date.now()-Mdn[0]>tL))         {
                          EnS[1]=Date.now();if(trem<9)EnS[0]=1   }
    if ( e.ctrlKey&&!e.shiftKey&&(Date.now()-Mdn[0]>tL))
                                  custombuttons.editButton(this);
    if (!e.ctrlKey&& e.shiftKey&&(Date.now()-Mdn[0]>tL))gShowPopup(this);
  }  Mdn[3]=0; B=Date.now(); pE=0;}, false, gBrowser);

addEventListener("mousemove",(e)=>{
  H=content.innerWidth-h,V=content.innerHeight-v,mf=e.ctrlKey&&!e.shiftKey&&!e.altKey;
  if (gBrowser.selectedBrowser.matches(":hover")){
     if (mf||(((EnS[0]==1)&&(Date.now()-EnS[1]<=tO)) && (Mdn[3]==0))){
        (EnS=((Date.now()-EnS[1]<=tO)&&EnS[0])?[1,Date.now()]:[0,0]);
        content.scrollBy(rv*sp(e.movementX,pw),rv*sp(e.movementY,pw))}
     else { setTimeout(()=>{X=e.clientX;Y=e.clientY},D); //Filter
      if (e.clientX >H && X>H && e.clientY >v && e.clientY < V )
        /* Vertical   aisle */ content.scrollBy(0,rv*sp(e.movementY,pw));
      if (e.clientY >V && Y>V && e.clientX >h && e.clientX < H)
        /* Horizontal aisle */ content.scrollBy(rv*sp(e.movementX,pw),0);
      if (e.clientX<h&&X<h&&e.clientY<v&&Y<v)content.scrollBy(-m*c*rv,0);
      if (e.clientX<h&&X<h&&e.clientY>V&&Y>v)content.scrollBy( m*c*rv,0);
      if (e.clientX>H&&X>H&&e.clientY<v&&Y<v)content.scrollBy(0,-m*c*rv);
      if (e.clientX>H&&X>H&&e.clientY>V&&Y>V)content.scrollBy(0, m*c*rv);
}}},false,gBrowser);

Отредактировано difabor (23-09-2017 23:54:20)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1220723-09-2017 23:55:08

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

difabor
Теперь нормально. Да, кнопочка знатная получилась, кручу - верчу, куда хочу. Спасибо Вам за труды.

Вот зум 300% или 30% - тогда да - можно ощутить.

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

Отредактировано villa7 (23-09-2017 23:57:36)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1220824-09-2017 00:01:32

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

villa7 пишет

difabor
Теперь нормально. Да, кнопочка знатная получилась, кручу - верчу, куда хочу. Спасибо Вам за труды.

Вот зум 300% или 30% - тогда да - можно ощутить.

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

Я отлаживал горизонтальный скроллинг при зуме 300% :)
И то - не у всех сайтов появлялся горизонтальный скроллбар :)
А в предпоследней версии (с опиской) - поленился - и вот результат :)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1220924-09-2017 07:04:22

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 582
UA: Firefox 52.0

Re: Custom Buttons

difabor пишет

Получил фильтрацию. Думаю, что получилось даже лучше, чем ожидал

Все отлично. Спасибо за кнопку.

Отсутствует

 

№1221024-09-2017 15:58:08

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

Re: Custom Buttons

Ребят, никто не сталкивался с проблемой: не могу скопировать код кнопки СВ
методом КОПИРОВАТЬ КОД В БУФЕР

Отсутствует

 

№1221125-09-2017 09:43:11

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

Re: Custom Buttons

dedfor пишет

Ребят, никто не сталкивался с проблемой: не могу скопировать код кнопки СВ
методом КОПИРОВАТЬ КОД В БУФЕР

Был такой глюк. Тебе нужно обновить Custom Buttons, может на 20-09-2017 10:21:58

Отсутствует

 

№1221225-09-2017 15:37:47

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

Re: Custom Buttons

Обновлял CB не помогло. Была 47 версия мозалы поменял на 50, наверно в этом причина. Да ладно и не надо, главное кнопки СВ
все работают.

Отредактировано dedfor (25-09-2017 15:38:24)

Отсутствует

 

№1221326-09-2017 00:21:41

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

Re: Custom Buttons

Наконец-то выложили бету 57.0b3 и она нехорошая.
Даже подписанный Custom Buttons не устанавливается ни при каких настройках.

Нужен новый код для конфигурационного файла.
Неподписанный CB 0.0.5.8.9.5pre2 (custom_buttons-0.0.5.8.9-fixed6pre2.xpi)
установился и работает.

Внимание! Будте осторожны. Не устанавливайте Legacy расширения,
которые не прошли специальную адаптацию под Firefox 57.

P.S. «Афёра SDK», видимо, благополучно завершилась (не проверял).

Выделить код

Код:

//
try {(code => {
    var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
    var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
        return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
    } catch(ex) {}}
    if ((jsval = imp("AddonSettings"))) {
        jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
        try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
    }
    lockPref("extensions.allow-non-mpc-extensions", true);
    var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);

    if (evl) return jsvals.forEach(jsval => {try {jsval.eval(code);} catch(ex) {re(ex);}});

    var sl = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);
    Cu.importGlobalProperties(["URL", "Blob"]); var url = URL.createObjectURL(new Blob([(code)]));
    jsvals.forEach(jsval => {try {sl.loadSubScript(url, jsval);} catch(ex) {re(ex);}});

})(String.raw`
    try {SIGNED_TYPES.clear();} catch(ex) {};
    "verifyZipSignedState" in this && (signedState => {
        var re = /\x06\x03U\x04\x03\x14[\s\S](\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i;
        var getUUID = () => {
            var gen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
            return (getUUID = () => gen.generateUUID().toString())();
        }
        var getURI = file => {
            var jsval = Cu.import("resource://gre/modules/addons/XPIProvider.jsm", {});
            return (getURI = file => jsval.getURIForResourceInFile(file, "META-INF/mozilla.rsa"))(file);
        }
        var getId = file => {
            var result, is = {close() {}}, sis = {close() {}};
            try {
                is = Services.io.newChannelFromURIWithLoadInfo(getURI(file), null).open();
                sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                sis.init(is); var str = sis.readBytes(sis.available());
                var match = str.match(re); if (match) result = match[1];
            } catch(ex) {}
            sis.close(); is.close();
            return result || getUUID();
        }
        verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) {
            if (aAddon.id || aAddon._installLocation.name == KEY_APP_TEMPORARY)
                return Promise.resolve({signedState, cert: null});
            var root = !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)
                ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot;
            return new Promise(resolve => {
                var callback = {openSignedAppFileFinished(rv, zipReader, cert) {
                    zipReader && zipReader.close();
                    resolve({signedState, cert: cert || {commonName: getId(aFile)}});
                }};
                gCertDB.openSignedAppFileAsync(root, aFile, callback.wrappedJSObject = callback);
            });
        }
    })(AddonManager.SIGNEDSTATE_NOT_REQUIRED);
`)} catch(err) {Components.utils.reportError(err);}

Отредактировано Dumby (26-09-2017 00:26:52)

Отсутствует

 

№1221426-09-2017 10:29:07

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

Re: Custom Buttons

Ultima2m пишет

difabor пишет: Получил фильтрацию. Думаю, что получилось даже лучше, чем ожидалВсе отлично. Спасибо за кнопку.

итоговый  код можно?

Отсутствует

 

№1221526-09-2017 11:32:02

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

intersk пишет
Ultima2m пишет

difabor пишет: Получил фильтрацию. Думаю, что получилось даже лучше, чем ожидалВсе отлично. Спасибо за кнопку.

итоговый  код можно?

Он приведён в №12206


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1221626-09-2017 13:39:53

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Как делается скроллинг отдельно в текстовом поле (TEXTAREA) и вообще в подполях контента, а не во всём контенте?
Может, вместо content.scrollBy можно поставить что-то другое?
Dumby, bunda1, Infocatcher, вы корифеи - может подскажете что-то?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1221727-09-2017 16:43:18

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Обнаружил интереснейшее поведение кнопки Блокнот в вкладке в режиме е10s.
При включении е10s иконка кнопки мутная - типа проблемы с компиляцией.
Открываю "редактировать", ничего не меняю и жму "ОК". Кнопка начинает прекрасно работать...
Делаю рестарт - та же картина: кнопка мутная, но после "ОК" - становится нормальной и начинает работать.
Это только у меня такой феномен или ещё у кого-то?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1221827-09-2017 19:15:39

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

Re: Custom Buttons

difabor пишет

Обнаружил интереснейшее поведение кнопки Блокнот в вкладке в режиме е10s.
При включении е10s иконка кнопки мутная - типа проблемы с компиляцией.

Вроде исправил: Блокнот в вкладке

Добавлено 27-09-2017 19:20:15

difabor пишет

Как делается скроллинг отдельно в текстовом поле (TEXTAREA) и вообще в подполях контента, а не во всём контенте?
Может, вместо content.scrollBy можно поставить что-то другое?
Dumby, bunda1, Infocatcher, вы корифеи - может подскажете что-то?

Может надо получить текстовое поле (TEXTAREA) через click или mousedown или mousemove и запустить TEXTAREA.scrollBy

Отредактировано bunda1 (27-09-2017 19:20:15)

Отсутствует

 

№1221927-09-2017 20:03:46

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет
difabor пишет

Обнаружил интереснейшее поведение кнопки Блокнот в вкладке в режиме е10s.
При включении е10s иконка кнопки мутная - типа проблемы с компиляцией.

Вроде исправил: Блокнот в вкладке

Спасибо, но у Вас есть объяснение описанному мной феномену?
Я обнаружил ещё один парадокс: если делать рестарт в e10s, когда находишься на вкладке about:addons, то старый Блокнот в вкладке тоже в порядке (кнопка не мутная и он работает).
ИМХО, понять причину этого феномена важнее, чем исправить кнопку. Она может вообще крыться в аддоне Custom Buttons.
У меня есть ещё одна кнопка, на которой я тренируюсь - она не несёт какого-либо осмысленного кода, но тоже так себя ведёт!
Что заставляет её так себя вести?
Уважаемый bunda1, Вам удалось воспроизвести описанный мной феномен?

bunda1 пишет

Добавлено 27-09-2017 19:20:15

difabor пишет

Как делается скроллинг отдельно в текстовом поле (TEXTAREA) и вообще в подполях контента, а не во всём контенте?
Может, вместо content.scrollBy можно поставить что-то другое?
Dumby, bunda1, Infocatcher, вы корифеи - может подскажете что-то?

Может надо получить текстовое поле (TEXTAREA) через click или mousedown или mousemove и запустить TEXTAREA.scrollBy

Дело в том, что я именно начинал с TEXTAREA.scrollBy - меня просто интересовало - будет кнопка как-то реагировать? - Никак не реагировала! Ни в TEXTAREA, ни вне!
Такое впечатление, что код вообще не воспринимает команду TEXTAREA.scrollBy


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1222027-09-2017 20:57:54

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

Re: Custom Buttons

difabor пишет

Дело в том, что я именно начинал с TEXTAREA.scrollBy - меня просто интересовало - будет кнопка как-то реагировать? - Никак не реагировала! Ни в TEXTAREA, ни вне!
Такое впечатление, что код вообще не воспринимает команду TEXTAREA.scrollBy

А как ты получил TEXTAREA?

Добавлено 27-09-2017 21:10:04

difabor пишет
bunda1 пишет
difabor пишет

Обнаружил интереснейшее поведение кнопки Блокнот в вкладке в режиме е10s.
При включении е10s иконка кнопки мутная - типа проблемы с компиляцией.

Вроде исправил: Блокнот в вкладке

Спасибо, но у Вас есть объяснение описанному мной феномену?

Не знаю почему, но старая кнопка при старте не выдела content.window.location и content.location. Заменил на gBrowser.currentURI.spec

Добавлено 27-09-2017 21:16:12
Кстати, вот так работает content.document.getElementsByTagName("textarea")[0].scrollBy(34, 3500); в Блокноте в вкладке.

Добавлено 27-09-2017 21:17:41

difabor пишет

Уважаемый bunda1, Вам удалось воспроизвести описанный мной феномен?

Да.

Отредактировано bunda1 (27-09-2017 21:17:41)

Отсутствует

 

№1222127-09-2017 21:17:58

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

bunda1 пишет
difabor пишет

Дело в том, что я именно начинал с TEXTAREA.scrollBy - меня просто интересовало - будет кнопка как-то реагировать? - Никак не реагировала! Ни в TEXTAREA, ни вне!
Такое впечатление, что код вообще не воспринимает команду TEXTAREA.scrollBy

А как ты получил TEXTAREA?

Я даже вопроса Вашего не понял :(
e.target.nodeName: TEXTAREA, ну, я и написал: TEXTAREA.scrollBy
Я же в этом профан :(. Наверное вообще глупость написал. Но Вы не сердитесь

Сейчас буду "играться" с content.document.getElementsByTagName("textarea")[0].scrollBy(34, 3500);
Я же всё через "тыки" делаю - базовых знаний - ноль целых, ноль десятых, а желание есть...
В моём возрасте учиться уже трудно... :(

Отредактировано difabor (27-09-2017 21:27:17)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1222227-09-2017 22:15:22

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

Уважаемый bunda1,
мне удалось скроллить в textarea без колёсика!!!
Но я обнаружил следующее:
На этом сайте и ещё на многих других это обеспечивается content.document.getElementsByTagName("textarea")[0].scrollBy
но есть сайты, где требуется content.document.getElementsByTagName("textarea")[1].scrollBy
Как узнать, где нужно 0, а где  1?
Кроме того, на этом сайте, на этой странице есть поле PRE - там ни 0, ни 1, ни 2, ни 3 не помогают.... А это поле - код под спойлером...


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1222328-09-2017 02:58:39

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

Re: Custom Buttons

difabor пишет: Как узнать, где нужно 0, а где  1?

getElementsByTagName выдаёт массив элементов с указанным тэгом
цифра это номер элемента в том массиве.


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

Отсутствует

 

№1222428-09-2017 08:42:01

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Custom Buttons

okkamas_knife пишет

difabor пишет: Как узнать, где нужно 0, а где  1?

getElementsByTagName выдаёт массив элементов с указанным тэгом
цифра это номер элемента в том массиве.

Я понимаю, но вот как узнать этот номер?
Та же textarea как тэг может быть у нескольких элементов. Как узнать (напр. из e.target или e.originalTarget или ещё как-то) какой по счёту этот конкретный элемент (по "click", например, это элемент, 0-й, 1-й или ещё какой-то)?
Или элемент 'PRE' - там где приведён код?
Допустим, по "click" я могу узнать что-то о том элементе. Что мне надо "выудить" по "click", чтобы проскроллить, например, "pre"? Я-то вообще узнал, что эта штука называется "pre" по e.target.nodeName по аналогии с e.target.nodeName в текстовом поле - там e.target.nodeName называется textarea (всё - заглавными буквами)...

Отредактировано difabor (28-09-2017 08:43:09)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№1222528-09-2017 09:07:14

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

Re: Custom Buttons

Уважаемый bunda1
На этом сайте и ещё на многих других это обеспечивается content.document.getElementsByTagName("textarea")[0].scrollBy

Ну я же писал что работает в Блокноте в вкладке, а там только одна textarea. А так okkamas_knife прав.

Кроме того, на этом сайте, на этой странице есть поле PRE - там ни 0, ни 1, ни 2, ни 3 не помогают.... А это поле - код под спойлером.

Да, на этой странице 5 PRE, вот как это можно узнать alert(content.document.getElementsByTagName("PRE").length);. Для того что бы передвигать PRE нужно узнать на каком по счёту PRE находится фокус или курсор и использовать content.document.getElementsByTagName("textarea")[?].scrollBy. Или как я уже писал получить textarea или PRE по клику из e.target. Не знаю какой вариант лучше.

Добавлено 28-09-2017 09:10:43

difabor пишет

e.target.nodeName называется textarea (всё - заглавными буквами)...

Используй .localName и будет без заглавных букв.

Добавлено 28-09-2017 09:31:35
Кстати, оказывается textarea можно легко получить из content.document.activeElement . Типа:
Но с pre это не работает.

Выделить код

Код:

var el = content.document.activeElement.localName;
if ( el.localName = 'textarea' ) el.scrollBy();

Отредактировано bunda1 (28-09-2017 09:31:35)

Отсутствует

 

Board footer

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