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

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

№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
Сообщений: 608
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);


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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EWheelLessScroll%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJycGKioqCyYmJhEoKCgYKioqISkpJCceHhVUFRMkthsaIbQjIiZZKScqMykpKSkpKSkeKCgoEyYmJgwnJycHKSkpBS8vLgYsKy0DKCQpCx8eHTYbGjSQHBqB4R8Vr/8lPSH/LlwP3CQrH4QmJCYvKyolDS0tLAkpKSkKKSkpBiUlJQAjHycAGRwbNBUoA48VGTfmIhrP/yEd5f8bEcj/IkAZ/zeJAP81ewf/IDcc1BwWPHAhIRsYIyMfACcnJwAREhAeFzYLnyFhBOwodwD/GCJE/x0U2P8eGtP/GA/E/x49GP80fwD/M4IA/yVKG/8pI8H/JCWP0xcWKGsODQoLDBMIUShyBf8pfwD/JHQA/xggQv8eE97/HBfb/wwEof8OLA3/LnwC/zWFAP8kRhT/KSHE/zUz9f8sKZ77BwYFNxcvDE0lZwX/J3oA/yZ4AP8VIz7/CwCd/w4KV/8xMUb/Nioc/y83Bv8hYQT/IEYT/ysgxP82MOn/KSie9w8PHzodQAxMJmoD/yVwAP8ZSgD/EBcR/1lWYP+npaD/zM/W/31aP/+kUAD/bT8H/yQgCv8YEIj/Lynl/y0pqfobFTI8EiQATBYzA/8NKzj/ACV6/zI7VP/d19r/4t7o/8zO3P9vUzr/qVoA/8FpAf9pPAf/Ei0L/xoeTf8eFXb8GREzPgceUkwHOqT/Alf7/wBS+f80Q2f/1MnN/9fP2f/Ozdz/clQ8/6hYAP+1YwD/aDwI/yFeBf8ycAD/HzgK/hAQDkEENpZLAVTj/wBd//8ATev/NkNl/93U1P/b1dj/r7Gz/0k2KP+KQgD/umQA/24+Bf8cVAX/MnoE/y1iCP8cLA5DBDKMSwNO3P8AXP//AFH6/yM1W/+QjJP/Xl2D/zs5lP85N7D/KyRg/1QtGf9GIgD/G1QA/y93AP8lWgb/GSwNRQY5m04AUOH/AEbg/xE3kv8wJRf/HR1U/zxD3P9cXv//Xl///09R+P8qLpT/Kyo5/x86E/8QUwD/HVoB/xcyCUkHG0Y/MDVK95RjF//UhAD/7ZoA/8F7Av93RSj/QDF+/0s8lf+EeZz/ubjB//X29v/Z1dz/eoCA/x84Hf8JGQVFCwEABTQZAEGHWQKfzYcF7+CSB/+tjSj/YIxd/wyfmP8Yn53/g7Ov/+Dk5f/8+vr/0c3M8aeYlLFRPDleKRkVDA8FBAAZDAcAFxAJAB0SCiQ4Kh99BXKIzwDT3f8A////Ae7w/wu3vfE2ZW69X1FTczocCSdUNykAUz0xADcoHgAOBQQAHg8HACEWCAAZEgwALBkWAA4PJxINg49hDrzBrg2usog1bnI0REFGBEtBQwA5GQUAWj4xAFM+MwA1Jh0A/n8AAPgfAADgDwAAgAMAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMADAAD4HwAA/n8AAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20rv%3D-1%2CtL%3D600%2CtO%3D3000%2CD%3D999%2Cpw%3D1%2CpE%3D0%2Cc%3D1%2Cm%3D9999999%2Cv%3D30%2Ch%3D30%3B%0Avar%20B%3D0%2Cmf%2CMdn%3D%5B%5D%2CEnS%3D%5B%5D%2CV%2CH%2CX%2CY%3B%0A%0Afunction%20cM%28n%2Cm%29%7Bvar%20x%3D%28Date.now%28%29-B%3E99%29%3F%28n+1%29%25m%3An%3BB%3DDate.now%28%29%3Breturn%28x%29%7D%0Afunction%20rM%28n%29%20%20%7Bvar%20x%3D%28Date.now%28%29-B%3E99%29%20%3F%20-n%20%3A%20n%3B%20B%3DDate.now%28%29%3Breturn%28x%29%7D%0Afunction%20sp%28base%2Cpw%29%20%7Breturn%28base*Math.pow%28Math.abs%28base%29%2Cpw%29%29%7D%0A%0AaddEventListener%28%27keydown%27%2Ce%3D%3E%28%21e.ctrlKey%20%26%26%20e.altKey%20%26%26%20e.shiftKey%20%26%26%0A%28%28%28e.keyCode%3D%3D54%29%26%26%28rv%3DrM%28rv%29%29%29%7C%7C%28e.keyCode%3D%3D53%29%26%26%28pw%3DcM%28pw%2C3%29%29%29%29%2C0%2Cwindow%29%3B%0A%0AaddEventListener%28%22mousedown%22%2C%28e%29%3D%3E%7Bif%28Date.now%28%29-B%3C99%29%7BB%3DDate.now%28%29%3Breturn%7D%0A%20%20B%3DDate.now%28%29%3B%20Mdn%3D%5BDate.now%28%29%2Ce.clientX%2Ce.clientY%2C1%5D%3B%0A%20%20if%28Date.now%28%29-EnS%5B1%5D%3EtO%29%7BpE%3DEnS%5B0%5D%3B%20EnS%5B0%5D%3D0%7D%7D%2C%20false%2C%20gBrowser%29%3B%0A%0AaddEventListener%28%22click%22%2C%28e%29%3D%3E%7Bif%28Date.now%28%29-B%3C99%29%20%7BB%3DDate.now%28%29%3Breturn%7D%0A%20%20var%20udx%3De.clientX-Mdn%5B1%5D%2C%20udy%3De.clientY-Mdn%5B2%5D%2C%20trem%3Dudx*udx+udy*udy%3B%0A%20%20if%20%28%21e.button%26%26%21e.altKey%29%20%7B%0A%20%20%20%20if%20%28%21e.ctrlKey%26%26%21e.shiftKey%26%26%28trem%3C9%29%26%26%28EnS%5B0%5D%7C%7CpE%29%29%7BEnS%3D%5B0%2CDate.now%28%29%5D%7D%0A%20%20%20%20if%20%28%21e.ctrlKey%26%26%21e.shiftKey%26%26%28Date.now%28%29-Mdn%5B0%5D%3EtL%29%29%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EnS%5B1%5D%3DDate.now%28%29%3Bif%28trem%3C9%29EnS%5B0%5D%3D1%20%20%20%7D%0A%20%20%20%20if%20%28%20e.ctrlKey%26%26%21e.shiftKey%26%26%28Date.now%28%29-Mdn%5B0%5D%3EtL%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20custombuttons.editButton%28this%29%3B%0A%20%20%20%20if%20%28%21e.ctrlKey%26%26%20e.shiftKey%26%26%28Date.now%28%29-Mdn%5B0%5D%3EtL%29%29gShowPopup%28this%29%3B%0A%20%20%7D%20%20Mdn%5B3%5D%3D0%3B%20B%3DDate.now%28%29%3B%20pE%3D0%3B%7D%2C%20false%2C%20gBrowser%29%3B%0A%0AaddEventListener%28%22mousemove%22%2C%28e%29%3D%3E%7B%0A%20%20H%3Dcontent.innerWidth-h%2CV%3Dcontent.innerHeight-v%2Cmf%3De.ctrlKey%26%26%21e.shiftKey%26%26%21e.altKey%3B%0A%20%20if%20%28gBrowser.selectedBrowser.matches%28%22%3Ahover%22%29%29%7B%0A%20%20%20%20%20if%20%28mf%7C%7C%28%28%28EnS%5B0%5D%3D%3D1%29%26%26%28Date.now%28%29-EnS%5B1%5D%3C%3DtO%29%29%20%26%26%20%28Mdn%5B3%5D%3D%3D0%29%29%29%7B%0A%20%20%20%20%20%20%20%20%28EnS%3D%28%28Date.now%28%29-EnS%5B1%5D%3C%3DtO%29%26%26EnS%5B0%5D%29%3F%5B1%2CDate.now%28%29%5D%3A%5B0%2C0%5D%29%3B%0A%20%20%20%20%20%20%20%20content.scrollBy%28rv*sp%28e.movementX%2Cpw%29%2Crv*sp%28e.movementY%2Cpw%29%29%7D%0A%20%20%20%20%20else%20%7B%20setTimeout%28%28%29%3D%3E%7BX%3De.clientX%3BY%3De.clientY%7D%2CD%29%3B%20//Filter%0A%20%20%20%20%20%20if%20%28e.clientX%20%3EH%20%26%26%20X%3EH%20%26%26%20e.clientY%20%3Ev%20%26%26%20e.clientY%20%3C%20V%20%29%0A%20%20%20%20%20%20%20%20/*%20Vertical%20%20%20aisle%20*/%20content.scrollBy%280%2Crv*sp%28e.movementY%2Cpw%29%29%3B%0A%20%20%20%20%20%20if%20%28e.clientY%20%3EV%20%26%26%20Y%3EV%20%26%26%20e.clientX%20%3Eh%20%26%26%20e.clientX%20%3C%20H%29%0A%20%20%20%20%20%20%20%20/*%20Horizontal%20aisle%20*/%20content.scrollBy%28rv*sp%28e.movementY%2Cpw%29%2C0%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3Ch%26%26X%3Ch%26%26e.clientY%3Cv%26%26Y%3Cv%29content.scrollBy%28-m*c*rv%2C0%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3Ch%26%26X%3Ch%26%26e.clientY%3EV%26%26Y%3Ev%29content.scrollBy%28%20m*c*rv%2C0%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3EH%26%26X%3EH%26%26e.clientY%3Cv%26%26Y%3Cv%29content.scrollBy%280%2C-m*c*rv%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3EH%26%26X%3EH%26%26e.clientY%3EV%26%26Y%3EV%29content.scrollBy%280%2C%20m*c*rv%29%3B%0A%7D%7D%7D%2Cfalse%2CgBrowser%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Acustombuttons.editButton%28this%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано 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

В инициализацию

Выделить код

Код:

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);


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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EWheelLessScroll%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJycGKioqCyYmJhEoKCgYKioqISkpJCceHhVUFRMkthsaIbQjIiZZKScqMykpKSkpKSkeKCgoEyYmJgwnJycHKSkpBS8vLgYsKy0DKCQpCx8eHTYbGjSQHBqB4R8Vr/8lPSH/LlwP3CQrH4QmJCYvKyolDS0tLAkpKSkKKSkpBiUlJQAjHycAGRwbNBUoA48VGTfmIhrP/yEd5f8bEcj/IkAZ/zeJAP81ewf/IDcc1BwWPHAhIRsYIyMfACcnJwAREhAeFzYLnyFhBOwodwD/GCJE/x0U2P8eGtP/GA/E/x49GP80fwD/M4IA/yVKG/8pI8H/JCWP0xcWKGsODQoLDBMIUShyBf8pfwD/JHQA/xggQv8eE97/HBfb/wwEof8OLA3/LnwC/zWFAP8kRhT/KSHE/zUz9f8sKZ77BwYFNxcvDE0lZwX/J3oA/yZ4AP8VIz7/CwCd/w4KV/8xMUb/Nioc/y83Bv8hYQT/IEYT/ysgxP82MOn/KSie9w8PHzodQAxMJmoD/yVwAP8ZSgD/EBcR/1lWYP+npaD/zM/W/31aP/+kUAD/bT8H/yQgCv8YEIj/Lynl/y0pqfobFTI8EiQATBYzA/8NKzj/ACV6/zI7VP/d19r/4t7o/8zO3P9vUzr/qVoA/8FpAf9pPAf/Ei0L/xoeTf8eFXb8GREzPgceUkwHOqT/Alf7/wBS+f80Q2f/1MnN/9fP2f/Ozdz/clQ8/6hYAP+1YwD/aDwI/yFeBf8ycAD/HzgK/hAQDkEENpZLAVTj/wBd//8ATev/NkNl/93U1P/b1dj/r7Gz/0k2KP+KQgD/umQA/24+Bf8cVAX/MnoE/y1iCP8cLA5DBDKMSwNO3P8AXP//AFH6/yM1W/+QjJP/Xl2D/zs5lP85N7D/KyRg/1QtGf9GIgD/G1QA/y93AP8lWgb/GSwNRQY5m04AUOH/AEbg/xE3kv8wJRf/HR1U/zxD3P9cXv//Xl///09R+P8qLpT/Kyo5/x86E/8QUwD/HVoB/xcyCUkHG0Y/MDVK95RjF//UhAD/7ZoA/8F7Av93RSj/QDF+/0s8lf+EeZz/ubjB//X29v/Z1dz/eoCA/x84Hf8JGQVFCwEABTQZAEGHWQKfzYcF7+CSB/+tjSj/YIxd/wyfmP8Yn53/g7Ov/+Dk5f/8+vr/0c3M8aeYlLFRPDleKRkVDA8FBAAZDAcAFxAJAB0SCiQ4Kh99BXKIzwDT3f8A////Ae7w/wu3vfE2ZW69X1FTczocCSdUNykAUz0xADcoHgAOBQQAHg8HACEWCAAZEgwALBkWAA4PJxINg49hDrzBrg2usog1bnI0REFGBEtBQwA5GQUAWj4xAFM+MwA1Jh0A/n8AAPgfAADgDwAAgAMAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMADAAD4HwAA/n8AAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20rv%3D-1%2CtL%3D600%2CtO%3D3000%2CD%3D999%2Cpw%3D1%2CpE%3D0%2Cc%3D1%2Cm%3D9999999%2Cv%3D30%2Ch%3D30%3B%0Avar%20B%3D0%2Cmf%2CMdn%3D%5B%5D%2CEnS%3D%5B%5D%2CV%2CH%2CX%2CY%3B%0A%0Afunction%20cM%28n%2Cm%29%7Bvar%20x%3D%28Date.now%28%29-B%3E99%29%3F%28n+1%29%25m%3An%3BB%3DDate.now%28%29%3Breturn%28x%29%7D%0Afunction%20rM%28n%29%20%20%7Bvar%20x%3D%28Date.now%28%29-B%3E99%29%20%3F%20-n%20%3A%20n%3B%20B%3DDate.now%28%29%3Breturn%28x%29%7D%0Afunction%20sp%28base%2Cpw%29%20%7Breturn%28base*Math.pow%28Math.abs%28base%29%2Cpw%29%29%7D%0A%0AaddEventListener%28%27keydown%27%2Ce%3D%3E%28%21e.ctrlKey%20%26%26%20e.altKey%20%26%26%20e.shiftKey%20%26%26%0A%28%28%28e.keyCode%3D%3D54%29%26%26%28rv%3DrM%28rv%29%29%29%7C%7C%28e.keyCode%3D%3D53%29%26%26%28pw%3DcM%28pw%2C3%29%29%29%29%2C0%2Cwindow%29%3B%0A%0AaddEventListener%28%22mousedown%22%2C%28e%29%3D%3E%7Bif%28Date.now%28%29-B%3C99%29%7BB%3DDate.now%28%29%3Breturn%7D%0A%20%20B%3DDate.now%28%29%3B%20Mdn%3D%5BDate.now%28%29%2Ce.clientX%2Ce.clientY%2C1%5D%3B%0A%20%20if%28Date.now%28%29-EnS%5B1%5D%3EtO%29%7BpE%3DEnS%5B0%5D%3B%20EnS%5B0%5D%3D0%7D%7D%2C%20false%2C%20gBrowser%29%3B%0A%0AaddEventListener%28%22click%22%2C%28e%29%3D%3E%7Bif%28Date.now%28%29-B%3C99%29%20%7BB%3DDate.now%28%29%3Breturn%7D%0A%20%20var%20udx%3De.clientX-Mdn%5B1%5D%2C%20udy%3De.clientY-Mdn%5B2%5D%2C%20trem%3Dudx*udx+udy*udy%3B%0A%20%20if%20%28%21e.button%26%26%21e.altKey%29%20%7B%0A%20%20%20%20if%20%28%21e.ctrlKey%26%26%21e.shiftKey%26%26%28trem%3C9%29%26%26%28EnS%5B0%5D%7C%7CpE%29%29%7BEnS%3D%5B0%2CDate.now%28%29%5D%7D%0A%20%20%20%20if%20%28%21e.ctrlKey%26%26%21e.shiftKey%26%26%28Date.now%28%29-Mdn%5B0%5D%3EtL%29%29%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EnS%5B1%5D%3DDate.now%28%29%3Bif%28trem%3C9%29EnS%5B0%5D%3D1%20%20%20%7D%0A%20%20%20%20if%20%28%20e.ctrlKey%26%26%21e.shiftKey%26%26%28Date.now%28%29-Mdn%5B0%5D%3EtL%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20custombuttons.editButton%28this%29%3B%0A%20%20%20%20if%20%28%21e.ctrlKey%26%26%20e.shiftKey%26%26%28Date.now%28%29-Mdn%5B0%5D%3EtL%29%29gShowPopup%28this%29%3B%0A%20%20%7D%20%20Mdn%5B3%5D%3D0%3B%20B%3DDate.now%28%29%3B%20pE%3D0%3B%7D%2C%20false%2C%20gBrowser%29%3B%0A%0AaddEventListener%28%22mousemove%22%2C%28e%29%3D%3E%7B%0A%20%20H%3Dcontent.innerWidth-h%2CV%3Dcontent.innerHeight-v%2Cmf%3De.ctrlKey%26%26%21e.shiftKey%26%26%21e.altKey%3B%0A%20%20if%20%28gBrowser.selectedBrowser.matches%28%22%3Ahover%22%29%29%7B%0A%20%20%20%20%20if%20%28mf%7C%7C%28%28%28EnS%5B0%5D%3D%3D1%29%26%26%28Date.now%28%29-EnS%5B1%5D%3C%3DtO%29%29%20%26%26%20%28Mdn%5B3%5D%3D%3D0%29%29%29%7B%0A%20%20%20%20%20%20%20%20%28EnS%3D%28%28Date.now%28%29-EnS%5B1%5D%3C%3DtO%29%26%26EnS%5B0%5D%29%3F%5B1%2CDate.now%28%29%5D%3A%5B0%2C0%5D%29%3B%0A%20%20%20%20%20%20%20%20content.scrollBy%28rv*sp%28e.movementX%2Cpw%29%2Crv*sp%28e.movementY%2Cpw%29%29%7D%0A%20%20%20%20%20else%20%7B%20setTimeout%28%28%29%3D%3E%7BX%3De.clientX%3BY%3De.clientY%7D%2CD%29%3B%20//Filter%0A%20%20%20%20%20%20if%20%28e.clientX%20%3EH%20%26%26%20X%3EH%20%26%26%20e.clientY%20%3Ev%20%26%26%20e.clientY%20%3C%20V%20%29%0A%20%20%20%20%20%20%20%20/*%20Vertical%20%20%20aisle%20*/%20content.scrollBy%280%2Crv*sp%28e.movementY%2Cpw%29%29%3B%0A%20%20%20%20%20%20if%20%28e.clientY%20%3EV%20%26%26%20Y%3EV%20%26%26%20e.clientX%20%3Eh%20%26%26%20e.clientX%20%3C%20H%29%0A%20%20%20%20%20%20%20%20/*%20Horizontal%20aisle%20*/%20content.scrollBy%28rv*sp%28e.movementX%2Cpw%29%2C0%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3Ch%26%26X%3Ch%26%26e.clientY%3Cv%26%26Y%3Cv%29content.scrollBy%28-m*c*rv%2C0%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3Ch%26%26X%3Ch%26%26e.clientY%3EV%26%26Y%3Ev%29content.scrollBy%28%20m*c*rv%2C0%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3EH%26%26X%3EH%26%26e.clientY%3Cv%26%26Y%3Cv%29content.scrollBy%280%2C-m*c*rv%29%3B%0A%20%20%20%20%20%20if%20%28e.clientX%3EH%26%26X%3EH%26%26e.clientY%3EV%26%26Y%3EV%29content.scrollBy%280%2C%20m*c*rv%29%3B%0A%7D%7D%7D%2Cfalse%2CgBrowser%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Acustombuttons.editButton%28this%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


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

Отредактировано 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
Сообщений: 608
UA: Firefox 52.0

Re: Custom Buttons

difabor пишет

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

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

Отсутствует

 

№1221024-09-2017 15:58:08

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

Re: Custom Buttons

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

Отсутствует

 

№1221125-09-2017 09:43:11

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
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
Сообщений: 62
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
Сообщений: 2242
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.

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

Выделить код

Код:

//
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);}


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

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

Отсутствует

 

№1221426-09-2017 10:29:07

intersk
Участник
 
Группа: Members
Зарегистрирован: 20-06-2013
Сообщений: 104
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
Сообщений: 4811
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
Сообщений: 4811
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
Сообщений: 9558
UA: Seamonkey 2.14

Re: Custom Buttons

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

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


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

Отсутствует

 

№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
Сообщений: 4811
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 . Типа:

Выделить код

Код:

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

Но с pre это не работает.

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

Отсутствует

 

Board footer

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