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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№1215108-09-2017 08:53:13

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

Re: Custom Buttons

Ki_rrrilll пишет
difabor пишет
Ki_rrrilll пишет

Если выделяем все на странице Ctrl + A а потом копируем.
Как можно сделать чтобы не копировался атрибут alt у картинок?
И вообще, чтоб копировался только видимый текст?

Переключение ссылок и ярлыков

Выделить код

Код:

/* Toggle Links and Titles */
function TgLinks() {
var links = window.content.document.getElementsByTagName("a");
    for(var i = 0; i < links.length; i++) {
        var href = links[i].getAttribute('href');
        if(href != null) {
            links[i].removeAttribute('href');
            links[i].setAttribute('_href', href);
        } else {
            var href = links[i].getAttribute('_href');
            if(href != null) {
                links[i].setAttribute('href', href);
                links[i].removeAttribute('_href');
            }
        }
    }
var imgs = window.content.document.getElementsByTagName("img");
    for(var i = 0; i < imgs.length; i++) {
        var title = imgs[i].getAttribute('title');
        if(title != null) {
            imgs[i].removeAttribute('title');
            imgs[i].setAttribute('_title',title);
        } else {
            var title = imgs[i].getAttribute('_title');
            if(title != null) {
                imgs[i].setAttribute('title', title);
                imgs[i].removeAttribute('_title');
            }
        }
    }
}
addEventListener('keydown',function(e){
  if (!e.ctrlKey && e.altKey && !e.shiftKey && (e.keyCode==76))TgLinks(); 
},0,gBrowser);

this.onclick = function(e) {
 if ((e.button == 0)&&!e.ctrlKey&&!e.shiftKey&&!e.altKey) e.preventDefault(); 
 if ((e.button == 1)&&!e.ctrlKey&&!e.shiftKey&&!e.altKey) TgLinks();
}


Была кнопка "Переключение ссылок".
Она включала/отключала ссылки по нажатию на неё СКМ или по Alt-L
Я туда добавил включение/отключение ярлыков картинок (атрибут "alt" называется почему-то title а не alt :)
Короче, сейчас этот код включает/выключает сразу и ссылки и ярлыки картинок - по СКМ или Alt-L
Причём я убедился, что ярлык (скрытая подпись картинки - alt="что-то там") при наведении курсора пропадает.
Но :( :( :( при копировании это не пропадает, увы...:( :( :(

Это не совсем то. alt это alt, а title - это title. Это разные атрибуты. Всплывающая подсказка - это тайтл. А альт мы видим на месте картинки если она по какой либо причине не загрузилась.
Ваш код удаляет тайтл, поэтому всплывающая подсказка пропадает. Но код не удаляет альт и поэтому альт есть в скопированном тексте.

Но спасибо за идею! :beer: Ведь ничто не мешает  таким же макаром удалять и альт. Что я и сделал - удаляю у всех картинок альт, выделяю все, копирую, а потом возвращаю все альты на место.

Первое, чем я занялся - это пытался удалить  alt :)
Ничего не получалось :( И тогда я взялся выяснять (по View Page Source) на какой атрибут откликается то, что в кавычках после alt="....")
На src="..." - давал УРЛ, на width= давал ширину и т.д. а на alt - ничего не давал или null :(
Просто перебором дошёл до title...
То есть вначале вместо title у меня был alt. Но это не помогало :(
Не смогли бы Вы привести Ваш код - я бы посмотрел где была моя ошибка...
P.S. Я немного затупил :)
Добавил удаление alt - удаляет :). Так что код приводить не надо. Видать, я просто проверял не то :)
Вообщем, общими усилиями разобрались. А что? получилась полезная кнопка:beer:

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


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

Отсутствует

 

№1215208-09-2017 10:47:12

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

Re: Custom Buttons

не работает Allow copy/context menu, поправьте пожалуйста
(для сайта freshdoc.ru)

скрытый текст
(function(w){
        var arr = ['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint'];
        for(var i = 0, x; x = arr[i]; i++){
            if(w['on' + x])w['on' + x] = null;
            w.addEventListener(x, function(e){e.stopPropagation()}, true);
        };
        for(var j = 0, f; f = w.frames[j]; j++){try{arguments.callee(f)}catch(e){}}
})(content);

Отредактировано intersk (08-09-2017 11:45:12)

Отсутствует

 

№1215309-09-2017 15:32:39

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 599
UA: Firefox 43.0

Re: Custom Buttons

Здравствуйте.
Что нужно дописать к этим кодам:

Выделить код

Код:

// Закрыть все вкладки
[...gBrowser.tabs].forEach((tab)=> gBrowser.removeTab(tab));

// Закрыть вкладки слева
gBrowser.visibleTabs.forEach((tab)=> tab._tPos < TabContextMenu.contextTab._tPos && gBrowser.removeTab(tab));

чтобы при закрытии вкладок появлялость подобное сообщение:
confirmati.png


«The Truth Is Out There»

Отсутствует

 

№1215409-09-2017 18:54:45

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

Re: Custom Buttons

unter_officer пишет

Здравствуйте.
Что нужно дописать к этим кодам:

Выделить код

Код:

// Закрыть все вкладки
[...gBrowser.tabs].forEach((tab)=> gBrowser.removeTab(tab));

// Закрыть вкладки слева
gBrowser.visibleTabs.forEach((tab)=> tab._tPos < TabContextMenu.contextTab._tPos && gBrowser.removeTab(tab));

чтобы при закрытии вкладок появлялость подобное сообщение:
http://redload.ru/images/confirmati.png

Выделить код

Код:

// Закрыть все вкладки
custombuttons.confirmBox(null, "Закрыть все " + [...gBrowser.tabs].length + " вкладки?", "Да", "Отмена") &&
[...gBrowser.tabs].forEach((tab)=> gBrowser.removeTab(tab));

// Закрыть вкладки слева
custombuttons.confirmBox(null, "Закрыть " + [...gBrowser.tabs].length + " вкладки слева?", "Да", "Отмена") &&
gBrowser.visibleTabs.forEach((tab)=> tab._tPos < TabContextMenu.contextTab._tPos && gBrowser.removeTab(tab));

Отсутствует

 

№1215510-09-2017 03:23:41

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 599
UA: Firefox 43.0

Re: Custom Buttons

bunda1
Спасибо за помощь.


«The Truth Is Out There»

Отсутствует

 

№1215613-09-2017 09:28:40

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

Re: Custom Buttons

"кнопка-время" стало показывать время с отставанием на три часа
может дело в этой кнопке?

/*Initialization Code*/
// ВКЛ / ВЫКЛ  js на странице + разрешить выделение
// Результат появляется сразу без перезагрузки.

      const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); 
      var uri = makeURI("data:text/css," + encodeURIComponent( "*{ -moz-user-select: text !important;}" ));
// Для текущей вкладки:
           gBrowser.docShell.allowJavascript = !gBrowser.docShell.allowJavascript;
// или глобально:
//       gBrowser.mPrefs.setBoolPref("javascript.enabled", !gBrowser.mPrefs.getBoolPref("javascript.enabled"));
   if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET);
      else
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);

Отредактировано intersk (13-09-2017 09:31:45)

Отсутствует

 

№1215714-09-2017 15:57:11

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

Re: Custom Buttons

intersk пишет

"кнопка-время" стало показывать время с отставанием на три часа
может дело в этой кнопке?

Нет. Но в чём проблема я не знаю, может у тебя что с системными часами.

Отсутствует

 

№1215814-09-2017 21:22:01

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

Re: Custom Buttons

Кому надоело отключать FindBar, кликая на красный "Х" или нажимая Esc, ниже приводится примитивнейший код, включающий/выключающий  FindBar по Ctrl-F, без установки значений в about:config

Выделить код

Код:

var FndBarOn = false;
function TgFindBar(e) {if (FndBarOn) {e.preventDefault();e.stopPropagation();gFindBar.close()} FndBarOn =! FndBarOn}
addEventListener('keydown',function(e){if (e.ctrlKey &&!e.altKey && !e.shiftKey && (e.keyCode==70)) TgFindBar(e)},0,window);

Базируется на том, что по умолчанию  Ctrl-F включает FindBar.
Кроме того предполагается, что после рестарта FindBar закрыт. Переменная, отслеживающая состояние FindBarа (FndBarOn) не запоминается в about:config и никаких следов этот код там не оставляет.
Просто я привык по Ctrl-F и включать и выключать FindBar, но кнопки и аддоны делавшие это то ли куда-то пропали, то ли я не могу их найти работающими.
Вот и написал этот примитивный код. Может кому-то и пригодится.


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

Отсутствует

 

№1215914-09-2017 21:42:08

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

Re: Custom Buttons

difabor
а это, чито, не робит в новых FF ?  Вот такое поведение должно быть у панели поиска , я уверен и странно что до сих пор это не так.
Автоскрытие панели поиска

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

Выделить код

Код:

//(auto-hide Findbar)  Клик на странице - скроет панель поиска
 (function(e) {    this.clickPage = function(event) {gBrowser.addEventListener('mousedown',on, false);   };
   function go() {   clickPage(event);    gFindBar.close();   }
   function on() {   gBrowser.removeEventListener('mousedown',on, false);     timeoutId = setTimeout(go, 1000)   }
   function off() {   clickPage(event);     clearTimeout(timeoutId)   }
   gFindBar.addEventListener('click',off, false);
     clickPage(event);
 })();


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1216014-09-2017 22:52:07

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

Re: Custom Buttons

mokujin пишет

difabor
а это, чито, не робит в новых FF ?  Вот такое поведение должно быть у панели поиска , я уверен и странно что до сих пор это не так.
Автоскрытие панели поиска

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

Выделить код

Код:

//(auto-hide Findbar)  Клик на странице - скроет панель поиска
 (function(e) {    this.clickPage = function(event) {gBrowser.addEventListener('mousedown',on, false);   };
   function go() {   clickPage(event);    gFindBar.close();   }
   function on() {   gBrowser.removeEventListener('mousedown',on, false);     timeoutId = setTimeout(go, 1000)   }
   function off() {   clickPage(event);     clearTimeout(timeoutId)   }
   gFindBar.addEventListener('click',off, false);
     clickPage(event);
 })();

Дело в том, что с автоскрытием мне было не очень удобно. Может не привык, может ещё по какой-то причине - уже не упомню...
А Ctrl-F как-то роднее :)


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

Отсутствует

 

№1216115-09-2017 17:12:48

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

Re: Custom Buttons

Здравствуйте! Подскажите, как с помощью СВ и можно ли, извлечь  из реестра и поместить в константу ЗНАЧЕНИЕ параметра? Например: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\11.0\Installer     параметр: InstallDate   ЗНАЧЕНИЕ: 04.12.2016

Отредактировано dedfor (16-09-2017 20:37:58)

Отсутствует

 

№1216216-09-2017 23:29:33

Gladius333
Забанен
 
Группа: Members
Зарегистрирован: 11-02-2017
Сообщений: 92
UA: Firefox 52.0

Re: Custom Buttons

difabor пишет

Кому надоело отключать FindBar, кликая на красный "Х" или нажимая Esc, ниже приводится примитивнейший код, включающий/выключающий  FindBar по Ctrl-F, без установки значений в about:config

Выделить код

Код:

var FndBarOn = false;
function TgFindBar(e) {if (FndBarOn) {e.preventDefault();e.stopPropagation();gFindBar.close()} FndBarOn =! FndBarOn}
addEventListener('keydown',function(e){if (e.ctrlKey &&!e.altKey && !e.shiftKey && (e.keyCode==70)) TgFindBar(e)},0,window);

Бази...

То что надо, спасибо! Только код вроде с ошибками? у меня цвет кнопки меняеться, если с кодом что-то не так.
П.С все работает как надо.

Отредактировано Gladius333 (16-09-2017 23:46:36)

Отсутствует

 

№1216317-09-2017 11:13:12

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

Re: Custom Buttons

Gladius333 пишет

Только код вроде с ошибками? у меня цвет кнопки меняеться, если с кодом что-то не так.

:/

Выделить код

Код:

addEventListener('keydown', e=> {
   if ( (e.ctrlKey) && (!e.altKey) && (!e.shiftKey) && (e.keyCode == 70) ) {
        e.preventDefault();
        gFindBar.hidden ? gFindBar.open() : gFindBar.close();
        }
});

Отсутствует

 

№1216417-09-2017 15:28:30

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

Re: Custom Buttons

bunda1 пишет
Gladius333 пишет

Только код вроде с ошибками? у меня цвет кнопки меняеться, если с кодом что-то не так.

:/

Выделить код

Код:

addEventListener('keydown', e=> {
   if ( (e.ctrlKey) && (!e.altKey) && (!e.shiftKey) && (e.keyCode == 70) ) {
        e.preventDefault();
        gFindBar.hidden ? gFindBar.open() : gFindBar.close();
        }
});

Уважаемый bunda1,
предложенный Вами код тоже включает/отключает findbar, но при включении курсор на нём не фокусируется.
А в предложенном мною коде - фокусируется.
Я чуть-чуть модифицировал Ваш код и теперь и в Вашем коде курсор фокусируется:

Выделить код

Код:

addEventListener('keydown', e=> {
   if (e.ctrlKey && !e.altKey && !e.shiftKey && (e.keyCode == 70) && !gFindBar.hidden) {e.preventDefault(); gFindBar.close();}
});

Дело в том, что не надо делать gFindBar.open() вообще (имхо) - пусть он по умолчанию открывается Файрфоксом - Файрфокс фокусирует курсор :)

Отредактировано difabor (17-09-2017 15:29:28)


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

Отсутствует

 

№1216518-09-2017 13:07:10

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

Re: Custom Buttons

bunda1 пишет

intersk пишет: "кнопка-время" стало показывать время с отставанием на три часаможет дело в этой кнопке?Нет. Но в чём проблема я не знаю, может у тебя что с системными часами.

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

Отсутствует

 

№1216618-09-2017 18:40:23

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

Re: Custom Buttons

intersk пишет

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

Ну тогда не знаю. У меня Часы работает нормально на FF55.

Отсутствует

 

№1216718-09-2017 21:15:54

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

Re: Custom Buttons

intersk пишет

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

Если выставлено privacy.resistFingerprinting = true, все функции про время будут вести себя, как будто часовой пояс UTC+0. Что самое интересное, для расширений и самого браузера – тоже переправляет...


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

Отсутствует

 

№1216819-09-2017 09:19:44

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

Re: Custom Buttons

Вопрос по поводу скроллинга.
Я обнаружил аддон BMW - Broken Mouse Wheel 0.0.2, который делает вертикальный скроллинг движением мышки при нажатой Ctrl.
Сам код оказался до предела маленьким:

Выделить код

Код:

var height = document.documentElement.scrollHeight;

function scroll(event){
    var y = event.clientY;
    var yPercentage = y/screen.height;
    //ctrlKey is subject to change as more features will be added
    if (event.ctrlKey)
    window.scrollTo(0,yPercentage*height);
}

window.onmousemove = scroll;

и у меня возникло желание перевести его в СВ (чтобы затем добавить и горизонтальный скроллинг).
Но оказалось, что в СВ этот код работать не хочет. Никак...
На mousemove реагирует (я добавлял в функцию scroll алерты - они прекрасно срабатывают, а скроллинг - ни в какую.
Почему - не ясно. Аддон BMW делает, а тот же код в СВ - нет :(
Я также обнаружил, что даже BMW не на всех сайтах может скроллить, напр. на addons.mozilla.org (на mozilla.org он скроллит).
Кто-то может объяснить этот феномен?
Правда, там есть какой-то mozilla.rsa файл с какими-то иероглифами - неужели это он всё определяет?
Вообще-то изначально я хотел добавить горизонтальный скролл туда же по аналогии с вертикальным:

горизонтальный скролл

Выделить код

Код:

var height = document.documentElement.scrollHeight;
var width = document.documentElement.scrollWidth;
function scroll(event){
    var y = event.clientY;
    var yPercentage = y/screen.height;
    var x = event.clientX;
    var xPercentage = x/screen.width;
    //ctrlKey is subject to change as more features will be added
    if (event.ctrlKey)
    window.scrollTo(xPercentage*width,yPercentage*height);
}

window.onmousemove = scroll;


но в СВ никакой скролл не работает. Почему?

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


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

Отсутствует

 

№1216919-09-2017 09:20:15

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

Re: Custom Buttons

bunda1 пишет

intersk пишет: системные часы показывают правильное времяНу тогда не знаю. У меня Часы работает нормально на FF55.

Infocatcher пишет

intersk пишет: системные часы показывают правильное времяЕсли выставлено privacy.resistFingerprinting = true, все функции про время будут вести себя, как будто часовой пояс UTC+0. Что самое интересное, для расширений и самого браузера – тоже переправляет...

изменил в конфиге и даже ставил кнопку по ссылке бунды1 - время отстает на 3 часа

скрытый текст
18655121.png

Отредактировано intersk (19-09-2017 09:24:30)

Отсутствует

 

№1217019-09-2017 11:09:57

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

Re: Custom Buttons

difabor пишет

алерты - они прекрасно срабатывают

Тогда вот тебе ещё один

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

Выделить код

Код:

alert([

    document.location.href,
    window.location.href

].join("\n"));

напр. на addons.mozilla.org

Это же WebExtensions. Они на АМО и не должны работать.

Infocatcher пишет

Если выставлено privacy.resistFingerprinting

Ух ты, даже рестарт не нужен!
Двойной клик по настройке в about:config, и часы сразу перепрыгивают.

intersk пишет

время отстает на 3 часа

Ну так подведи сколько надо, типа d.setHours(d.getHours() + 3);

Отсутствует

 

№1217119-09-2017 11:58:11

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

Re: Custom Buttons

Dumby пишет
difabor пишет

алерты - они прекрасно срабатывают

Тогда вот тебе ещё один

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

Выделить код

Код:

alert([

    document.location.href,
    window.location.href

].join("\n"));

напр. на addons.mozilla.org

Это же WebExtensions. Они на АМО и не должны работать.

Уважаемый Dumby,
у меня этот alert([document.location.href, window.location.href].join("\n")); выдаёт:
chrome://browser/content/browser.xul
chrome://browser/content/browser.xul

и location.href и просто location - тоже...

Видите ли, Dumby, наши уровни просто несоизмеримы, и то, что Вам очевидно и ясно - для меня могут быть дебрями :(
Но огромнейшее спасибо! Когда я вместо window.scrollTo(0,yPercentage*height) сделал content.scrollTo(0,yPercentage*height); у меня задвигалось :)
Но почему в BMW оно скроллает по  window.scrollTo(0,yPercentage*height) всё равно не пойму...:(
Конечно, цель (скроллить через СВ) - достигнута, но как я был тупицей, так и остался... :(


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

Отсутствует

 

№1217219-09-2017 12:26:48

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

Re: Custom Buttons

P.S. часы вдруг заработали - показывают время как надо (с privacy.resistFingerprinting=false)

Отсутствует

 

№1217319-09-2017 13:46:15

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

Re: Custom Buttons

(отсюда)

Dumby пишет

Про ночнушку трудно что-то определённое сказать.
Там сейчас развели кипучую возню, чтобы поставить
расширения враскоряку как можно быстрее.

Я наконец поборол лень...
С подписью: custom_buttons-0.0.5.8.9-fixed5-signed.xpi
Без подписи: custom_buttons-0.0.5.8.9-fixed5.xpi

Ставится на Firefox 57, если сделать
extensions.allow-non-mpc-extensions = true
extensions.legacy.enabled = true

И до кучи немного оживил DOM Inspector: dom_inspector-2.0.16-fixed.xpi

Отредактировано Infocatcher (19-09-2017 17:13:38)


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

Отсутствует

 

№1217419-09-2017 18:50:23

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

Re: Custom Buttons

Вожусь со скроллингом с нажатой ctrl. Добился скроллинга и по горизонтали и по вертикали.
Скроллинг работает гораздо аккуратнее, чем колёсиком - можно подвинуть буквально на пару пикселей в какую хочешь сторону (и в обе стороны, если и по горизонтали не вмещается)
Но есть проблема.
Если надо проскроллить больше видимой страницы, то дойдя до низа с нажатой ctrl, ожидаешь, что если отпустить ctrl (чтобы отключить скроллинг) а затем перевести курсор наверх, чтобы продолжить скроллить, нажав ctrl, то скроллинг продолжится с этого места.
Не тут то было! Эта штука почему-то "думает", что мы в начале страницы, переводит весь контент туда и начинает скроллить как будто content.scrollY = 0, хотя "знает" что он - другой (я алертом выяснил).
Иными словами, она переводит всё в ту точку, в которой я бы находился, начав скроллить с начала страницы и до этой точки...
Как заставить эту штуку не начинать сначала - не знаю...
Может кто-то посоветует?
Вот код:

Выделить код

Код:

var height = document.documentElement.scrollHeight, width = document.documentElement.scrollWidth;
function scroll(e){
    var v = content.scrollY; // я пытался как-то увязать эти v и h 
    var h = content.scrollX; // с параметрами скроллинга, но безрезультатно...
    var y = e.clientY;
    var yPercentage = y/screen.height;
    var x = e.clientX;
    var xPercentage = x/screen.width;
    //alert(content.scrollY);
    //ctrlKey is subject to change as more features will be added
    if (e.ctrlKey){
       content.scrollTo(5*xPercentage*width,5*yPercentage*height);
    }
}
window.onmousemove = scroll;

Коэффициентами можно увеличить размер того, что скроллится (и скорость скроллинга) но это не совсем хорошее решение.
Если знать размер страницы по вертикали (в пикселях), то можно вычислить коэффициент по вертикали
Но при больших коэффициентах снижается аккуратность.
Но я не знаю даже как получить размер страницы :(
Может кто-то что-то посоветует?
С window.onmousemove = scroll я тоже "игрался"...
И gBrowser.onmousemove = scroll; и content.onmousemove = scroll; - тот же результат...


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

Отсутствует

 

№1217519-09-2017 19:07:29

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

Re: Custom Buttons

Infocatcher пишет

С подписью: custom_buttons-0.0.5.8.9-fixed5-signed.xpi
Без подписи: custom_buttons-0.0.5.8.9-fixed5.xpi

Это просто праздник!!!
Сердечно благодарю, что приютил, спасибо!

Я внешним редактором не пользуюсь совсем,
поэтому неудивительно, что я не в курсе что там за undefined
var conv = Cc['@mozilla.org/intl/saveascharset;1'].
(editExternal.js Line 274, custombuttons.jar Line 3990)

Но как я просмотрел там же
if (filePicker.show() == nsIFilePicker.returnOK) {
(editExternal.js Line 109, custombuttons.jar Line 3825)
вообще не понятно. Это то я уж точно искал везде. :blush:

Отредактировано Dumby (19-09-2017 19:08:16)

Отсутствует

 

Board footer

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