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

Вы можете получить техническую поддержку и просто поболтать в jabber-конференциях Mozilla Россия: support@conference.mozilla-russia.org — для решения проблем с программами Mozilla, talks@conference.mozilla-russia.org — для общения на свободные темы.

№1005116-04-2016 21:48:23

questman
Участник
 
Группа: Members
Зарегистрирован: 05-11-2011
Сообщений: 194
UA: Firefox 35.0

Re: Custom Buttons

Всем доброго времени суток!
Хотел поинтересоваться у знающих людей.
Есть ли кнопка,которая могла бы блокировать всплывающие окна?
Вот только не уверен правильно ли формулирую свой вопрос.Короче например есть сайт А на котором есть меню.При нажатии на пункты меню помимо перехода на нужную страницу перекидывает в новой вкладке на сайт B.
Может где есть кнопочка,которая бы могла блокировать переброс с сайта А на сайт В и закрывать вкладку.

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

Заранее спасибо!

Отсутствует

 

№1005216-04-2016 22:55:17

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

oleg.sgh
Я понял, но подумал, мож, наиболее простой вариант подойдет. :rolleyes: Можно, кстати, и индикатор прокрутки скрыть и сделать видимым только при наведении на позицию скролбара. Сответственно, навели, схватили и таскайте страницу вверх-вниз, как и хотели. А в остальное время, его как бы и нет. :)
А этот аддон тоже жестам мешает?

rbfyec пишет:

Как сделать, чтобы элемент с конкретным селектором, был всегда обведен рамкой?

Почему б просто не стилем:

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

Выделить код

Код:

  :-moz-any(bla,bla-bla):before {
    content: '' !important;
    display: block !important;
    visibility: visible !important;
    position: absolute !important;
    top: 0!important;
    left: 0!important;
    width: 100%!important;
    height: 100%!important;
    background: none!important;
    outline: 2px dashed red !important;
    outline-offset: -2px!important;
    z-index: 2147483647!important;
    pointer-events: none!important;
  }


Это не сработает на элементах с display:none. Но для них и getBoundingClientRect() 0 возвращает, соответственно и условие

Т. е. как бы сделать видимыми границы прямоугольника getBoundingClientRect

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

Отредактировано turbot (16-04-2016 22:56:32)

Отсутствует

 

№1005317-04-2016 07:08:13

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 2362
UA: Firefox 45.0

Re: Custom Buttons

turbot

А этот аддон тоже жестам мешает?

Эти дополнения мешают даже не столько жестам сколько выделению и контекстному меню. В прокрутку нужно все равно целится :P  В принципе, компромисс  с журналом и прокруткой найден переносом ее влево, просто чем больше...наблюдаю использование кнопок  тем сильнее вера в их всемогуществе...от того появилась хотелка  :) Пробовал в кнопке задать постоянную высоту полосы но это влияет на стиль журнала. При первом запуски и при первом открытии журнала там чернота равная установленной длине прокрутки. Может потому что стиль не в стилиш а в юзер хром...В общем, привыкаю...
А вообще, такая кнопка могла бы быть самодостаточной  и устраняющая...неприятности подобных дополнений. Впрочем, возможно, такая надобность, в небольшом перемещении страниц, возникла у меня, с моими увеличенными масштабами и скорости прокрутки почти в два раза...

Отсутствует

 

№1005417-04-2016 07:29:56

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

oleg.sgh

:offtopic:

Эти дополнения мешают даже не столько жестам сколько выделению

Это - совершенно не мешает с
https://lh3.googleusercontent.com/-8WTtwjfqUHI/VxMOLFJ_QlI/AAAAAAAAcao/cmciKDLr5oQ/s0/screenshot%2525202016-04-17%252520001.png
:)
А контекстному, соответственно, тем более, если выставлено таскать страницу с лкм.
Единственный его минус, это что автор забил, похоже, и не собирается переделывать под многопроцессность. Ну и появившийся баг, когда не работает в новооткрытых окнах. Который также давно не исправляется.
Не знаю, что без него делать буду, когда совсем отвалится... :(

Отсутствует

 

№1005517-04-2016 08:06:59

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 2362
UA: Firefox 45.0

Re: Custom Buttons

turbot

:offtopic:
Я, однажды, крутил это дополнение...но и  читал его предупреждение, когда конкретно занялся вопросом перетаскивания, и меня именно это оттолкнуло от его...внедрения в практику. К хорошему привыкаешь быстро а когда это хорошее отключается становится...не  айс :( и это не за горами... Может разработчик Scrollbar Anywhere добавит настройки...слишком оно уже ограничено по применению с любой кнопкой мыши.
Хотя, в свете последних тенденций, уже и не знаешь от куда прилетит. Однажды решил посмотреть что за зверь такой многопроцессность...так отвалилось дополнение NoSquint без которого мне вообще никак...Покручу его еще раз...может приживется а там видно будет...Если моя рациональность не удалить его :P раньше многопроцессности, в свете найденного компромисса с прокруткой.

Отсутствует

 

№1005618-04-2016 04:15:27

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1008
UA: unknown 0.0

Re: Custom Buttons

При правом клике на картинке в контекстном меню есть кнопка "открыть изображение" - ЛКМ и ПКМ открывает его в этом же окне, СКМ окрывает в новой вкладке но тут же переключается на нее. Помогите пожалуйста сделать что бы ПКМ открывал в фоновой вкладке (не переключаясь на нее).

Отсутствует

 

№1005718-04-2016 04:42:34

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

Stakhovsky
В любую кнопку, в инициализацию:

Выделить код

Код:

document.getElementById("context-viewimage").setAttribute("oncontextmenu", "event.preventDefault(); event.stopPropagation(); gBrowser.addTab( gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL ); hidePopup();");

Отредактировано turbot (18-04-2016 04:43:35)

Отсутствует

 

№1005818-04-2016 07:45:26

questman
Участник
 
Группа: Members
Зарегистрирован: 05-11-2011
Сообщений: 194
UA: Firefox 35.0

Re: Custom Buttons

Ребят,черкните пару строчек кода для кнопки.Небольшую болваночку.Когда некий код срабатывает после открытия новой вкладки и загрузки страницы
Буду признателен!

Отсутствует

 

№1005918-04-2016 08:14:16

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 2362
UA: Firefox 45.0

Re: Custom Buttons

Хотелось бы кнопку для поиска картинок с компьютера в гугл и яндекс картинках.
Устроит простой вариант: Раздельные кнопки . Нажал на кнопку - открылось окно выбора - выбор картинки - поиск пошел.

Идеальный вариант:
Одна кнопка с меню поисковиков по картинкам (Google,  Яндекс, Tineye).
Нажал кнопку - открылось меню поисковиков - выбрал поиск - открылось окно выбора - выбор картинки - поиск пошел.
Очередность выбора поиска и окна выбора с компьютера не имеет значения...как удобнее для реализации.
В готовых кнопках подобного не...увидел.

Отсутствует

 

№1006018-04-2016 09:41:04

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1008
UA: unknown 0.0

Re: Custom Buttons

turbot, большое спасибо.

Отсутствует

 

№1006118-04-2016 09:49:08

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

Re: Custom Buttons

questman пишет:

Ребят,черкните пару строчек кода для кнопки.Небольшую болваночку.Когда некий код срабатывает после открытия новой вкладки и загрузки страницы

Пример:

Выделить код

Код:

// Обработчик следит за переключением табов и запускают нужные коды и функции ................................
addEventListener("TabAttrModified", function(e) { 
   
   var tab = e.target;   
   var doc = tab.linkedBrowser.contentDocument;            
   var uri = doc.URL;
     
   if ( tab.hasAttribute('read') ) setTimeout(function() {  { tab.removeAttribute('unread') } }, 0)
   
   // автоматически меняем название таба для таба "Bookmarks tab" ....
   if ( uri == "chrome://browser/content/bookmarks/bookmarksPanel.xul") doc.title = "Закладки";

   // автоматически очистить адресную строку для 'Bookmarks tab' ....
   if ( gBrowser.currentURI.spec == "chrome://browser/content/bookmarks/bookmarksPanel.xul") {
        gURLBar.value = "";
        gURLBar.focus();
        };
         
   // стоп, если открыть другие владки в фоновом режиме ....
   if ( uri !== gBrowser.currentURI.spec ) return; 
        
   // показываем иконки сайтов в адресной строке ....
   gProxyFavIcon.src = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/Portrait.png";
     
}, true, gBrowser.tabContainer );

Отсутствует

 

№1006218-04-2016 18:16:50

questman
Участник
 
Группа: Members
Зарегистрирован: 05-11-2011
Сообщений: 194
UA: Firefox 35.0

Re: Custom Buttons

Пример:
// Обработчик следит за переключением табов и запускают нужные коды и функции ................................

Большое спасибо!

Кстати может ещё на один вопрос ответите?

А как найти на странице нужный элемент при помощи кнопки,например у которого есть только класс.
И как назначить этому элементу обработчик событий,например клик или маусап.

Отсутствует

 

№1006318-04-2016 18:45:48

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

Re: Custom Buttons

turbot пишет:

rbfyec пишет:

Как сделать, чтобы элемент с конкретным селектором, был всегда обведен рамкой?

Почему б просто не стилем:

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

Выделить код

Код:

  :-moz-any(bla,bla-bla):before {
    content: '' !important;
    display: block !important;
    visibility: visible !important;
    position: absolute !important;
    top: 0!important;
    left: 0!important;
    width: 100%!important;
    height: 100%!important;
    background: none!important;
    outline: 2px dashed red !important;
    outline-offset: -2px!important;
    z-index: 2147483647!important;
    pointer-events: none!important;
  }


turbot  спасибо за помощь!

А у меня вопрос к bunda1
В своё время я сделал tooltip
И вот сейчас заметил, что в нём невозможно поменять font-size. Я через cssText могу изменить цвет, сделать шрифт наклонным, но изменить его размер - никак.
Даже если из cssText совсем убрать запись font-size - размер шрифта остаётся тот же.

Отсутствует

 

№1006418-04-2016 19:17:53

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

rbfyec

Выделить код

Код:

tooltip {
  -moz-appearance: none !important;
}

oleg.sgh
Пока хватило только на гугль:

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

Выделить код

Код:

var Cc = Components.classes;
var Ci = Components.interfaces;

function getFile() {
  var nsIFilePicker = Ci.nsIFilePicker;
  var fp = Cc['@mozilla.org/filepicker;1'].
           createInstance(nsIFilePicker);
  fp.init(window, gNavigatorBundle.getString("openFile"),
                   nsIFilePicker.modeOpen);
  fp.appendFilters(nsIFilePicker.filterImages |
                   nsIFilePicker.filterAll);
  if (fp.show() == nsIFilePicker.returnCancel) return;

  var localFile = Cc["@mozilla.org/file/local;1"]
                      .createInstance(Ci.nsILocalFile);
  localFile.initWithPath(fp.file.path);
  return localFile;
}

function generateDataURI(aFile) {
  var contentType = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService)
                                             .getTypeFromFile(aFile);
  var inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
                      .createInstance(Ci.nsIFileInputStream);
  inputStream.init(aFile, 0x01, 0600, 0);
  var stream = Cc["@mozilla.org/binaryinputstream;1"]
                 .createInstance(Ci.nsIBinaryInputStream);
  stream.setInputStream(inputStream);
  var encoded = btoa(stream.readBytes(stream.available()));
  return "data:" + contentType + ";base64," + encoded;
}

this.onclick = function(e) {
  if (e.button == 0) {
    var file = getFile();
    if (!file) return;
    var dataURI = generateDataURI(file);
    var tab = gBrowser.loadOneTab("https://www.google.com/imghp?sbi=1", null, null, null, false);
    tab.addEventListener("load", function(){
      content.document.forms[1].elements[0].value=dataURI;
      content.document.querySelector('#qbbtc .gbqfb').click();
      tab.removeEventListener("load", arguments.callee, false);
    }, false)
  }
}



Добавлено 18-04-2016 19:22:42

questman пишет:

А как найти на странице нужный элемент при помощи кнопки,например у которого есть только класс.

Ну, например, с Document.querySelector() - Web APIs, как в этой кнопке. Смотрите остальное на MDN, я и сам не большой знаток.

Отредактировано turbot (18-04-2016 19:22:42)

Отсутствует

 

№1006518-04-2016 19:59:41

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

Re: Custom Buttons

turbot пишет:

rbfyec

Выделить код

Код:

tooltip {
  -moz-appearance: none !important;
}

Полез в userChrome.css вставлять этот код и увидел, что оказывается я в своё время прописал там размер шрифта для этого конкретного tooltip-а.  Прописал и забыл об этом.
Понятно, что все попытки изменить font-size были безуспешны. :dumb: :dumb: :dumb:

Отсутствует

 

№1006618-04-2016 20:34:55

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

Re: Custom Buttons

questman пишет:

А как найти на странице нужный элемент при помощи кнопки,например у которого есть только класс.
И как назначить этому элементу обработчик событий,например клик или маусап.

Если нужен первый элемент с указанным классом + обработчик событий для клика:

Выделить код

Код:

[...gBrowser.contentDocument.querySelectorAll('[class^="email"]')][0].onclick =e=> { alert(e.target) };

Если нужны все элементы с указанным классом на всех страницах + обработчик событий для клика:

Выделить код

Код:

for ( var br of gBrowser.browsers ) {
      [...br.contentDocument.querySelectorAll('[class^="email"]')]
      .forEach((m)=>{ m.onclick =e=> { alert(m) } });
      }

Отсутствует

 

№1006718-04-2016 21:30:25

questman
Участник
 
Группа: Members
Зарегистрирован: 05-11-2011
Сообщений: 194
UA: Firefox 35.0

Re: Custom Buttons

bunda1 пишет:

[...document.querySelectorAll('[class^="email"]')].onclick =e=> { alert(m) };

Работает только вот так.А вот с классами нет.Видимо я чего то не понимаю.

content.document.getElementById("main").onclick =e=> {
    alert("alert")
}

Отсутствует

 

№1006818-04-2016 21:35:21

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

Re: Custom Buttons

questman пишет:

Работает только вот так.А вот с классами нет.

Я ошибся, там нужно так:

Выделить код

Код:

[...content.document.querySelectorAll('[class^="email"]')][0].onclick =e=> { alert(e.target) };

или так:

Выделить код

Код:

[...content.document.getElementsByClassName('email')][0].onclick =e=> { alert(e.target) };

Добавлено 18-04-2016 21:39:05

questman пишет:

content.document.getElementById("main").onclick =e=> {
    alert("alert")
}

Вот только не у каждого элемента есть Id

Отредактировано bunda1 (18-04-2016 21:39:05)

Отсутствует

 

№1006918-04-2016 21:48:23

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 2362
UA: Firefox 45.0

Re: Custom Buttons

turbot пишет:

oleg.sgh
Пока хватило только на гугль

Спасибо. Не к спеху...дольше собирался обратится.

Отсутствует

 

№1007019-04-2016 02:11:28

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

oleg.sgh
Не вышло. У Яндекса при попытке вставить в форму, для ссылки на изображение, dataURI и запустить поиск - либо вешает браузер, либо ошибку ssl-соединения выдает.
Tineye dataURI вовсе не принимает.
А на формах для выбора файла - click() почему-то не работает. Так вообще проще всего было бы - открыть сайт, кликнуть по форме, выбрать файл в проводнике. Без всякого конвертирования в base64.

В общем, я пас. Мож кто другой, разбирающийся,  доделает это

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

Выделить код

Код:

this._handleClick =()=> menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");

var menuPopup = self.appendChild(document.createElement("menupopup"));
var Cc = Components.classes;
var Ci = Components.interfaces;

function getFile() {
  var nsIFilePicker = Ci.nsIFilePicker;
  var fp = Cc['@mozilla.org/filepicker;1'].
           createInstance(nsIFilePicker);
  fp.init(window, gNavigatorBundle.getString("openFile"),
                   nsIFilePicker.modeOpen);
  fp.appendFilters(nsIFilePicker.filterImages |
                   nsIFilePicker.filterAll);
  if (fp.show() == nsIFilePicker.returnCancel) return;

  var localFile = Cc["@mozilla.org/file/local;1"]
                      .createInstance(Ci.nsILocalFile);
  localFile.initWithPath(fp.file.path);
  return localFile;
};

function generateDataURI(aFile) {
  var contentType = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService)
                                             .getTypeFromFile(aFile);
  var inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
                      .createInstance(Ci.nsIFileInputStream);
  inputStream.init(aFile, 0x01, 0600, 0);
  var stream = Cc["@mozilla.org/binaryinputstream;1"]
                 .createInstance(Ci.nsIBinaryInputStream);
  stream.setInputStream(inputStream);
  var encoded = btoa(stream.readBytes(stream.available()));
  return "data:" + contentType + ";base64," + encoded;
};

this.searchInGoogle = function() {
  var file = getFile();
  if (!file) return;
  var dataURI = generateDataURI(file);
  var tab = gBrowser.loadOneTab("https://www.google.com/imghp?sbi=1", null, null, null, false);
  tab.addEventListener("load", function(){
    content.document.forms[1].elements[0].value = dataURI;
    content.document.forms[1].elements[1].click();
    tab.removeEventListener("load", arguments.callee, false);
  }, false)
};

this.searchInYandex = function() {
  var file = getFile();
  if (!file) return;
  var dataURI = generateDataURI(file);
  var tab = gBrowser.loadOneTab("https://yandex.ru/images/", null, null, null, false);
  tab.addEventListener("load", function(){
    content.document.forms[4].elements[0].value = dataURI;
    content.document.forms[4].elements[1].click();
    tab.removeEventListener("load", arguments.callee, false);
  }, false)
};

this.searchInTineye = function() {
  var file = getFile();
  if (!file) return;
  var dataURI = generateDataURI(file);
  var tab = gBrowser.loadOneTab("https://tineye.com/search/", null, null, null, false);
  tab.addEventListener("load", function(){
    content.document.forms[1].elements[0].value = dataURI;
    content.document.forms[1].elements[1].click();
    tab.removeEventListener("load", arguments.callee, false);
  }, false)
};

[
  {label: "Искать картинку в Гугл", func: "searchInGoogle();"},
  {label: "Искать картинку в Яндекс", func: "searchInYandex();"},
  {label: "Искать картинку в Tineye", func: "searchInTineye();"}
].forEach(function(m) {
  var mItem = document.createElement("menuitem");

  mItem.setAttribute("label", m.label);
  mItem.setAttribute("oncommand", "document.getElementById('" + self.id + "')." + m.func + "");

  menuPopup.appendChild(mItem);

});
addDestructor(function() {menuPopup.parentNode.removeChild(menuPopup)});



Добавлено 19-04-2016 02:15:48
А, TinEye результаты поиска выдает типа https://tineye.com/search/SHA1-картинки/, можно было б подставлять, но я не знаю как в кнопке хеш файла получить.

Отредактировано turbot (19-04-2016 02:15:48)

Отсутствует

 

№1007119-04-2016 03:24:27

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 492
UA: Firefox 45.0

Re: Custom Buttons

oleg.sgh
Понимаю, что не совсем то, но вдруг пригодится. Поиск в два этапа.
1. Открыть файл стандартной кнопкой

скрытый текст
http://i.imgur.com/Sqlue6L.png

2. В кнопке Context Search 2 2016-01-19 есть поиск картинки в Google, TinEye и Яндекс по ПКМ на картинке.
скрытый текст
http://i.imgur.com/XgNMRU0.png

Можно попробовать соединить 2 этапа в один, но тут я не специалист.

Отсутствует

 

№1007219-04-2016 05:13:28

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

xrun1
Кхм... Кнопка-то, для поиска из контекстного меню картинок, тоже есть, только что она пошлет в запросе, в качестве урл, на локальном файле?.. Мыслю, думаю, можно дальше не развивать? :)

Отсутствует

 

№1007319-04-2016 06:53:33

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 2362
UA: Firefox 45.0

Re: Custom Buttons

turbot

В общем, я пас. Мож кто другой, разбирающийся,  доделает это

Буду наедятся. Спасибо.

xrun1

Можно попробовать соединить 2 этапа в один

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

Отсутствует

 

№1007419-04-2016 09:33:14

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 492
UA: Firefox 45.0

Re: Custom Buttons

turbot
Сразу не проверил на всех поисках, извиняюсь. Но в Google локальный файл ищет, остальные 2 неактивны - серые. А дальше, как сказал oleg.sgh, можно в найденном Google. Т.е. 3-й шаг в поиск добавляется. Неудобно, конечно, но хоть что-то. ;)

Отсутствует

 

№1007519-04-2016 10:02:24

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Custom Buttons

xrun1
Дык, гугл и в моей работает. :) Посмотрел, там тоже через загрузку страницы, вставку в форму, и клика сделано. Я, кстати, не обратил внимания, что вы про кнопку написали. Думал, аддон предлагаете еще ставить.

Отсутствует

 

Board footer

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