Остро необходима возможность ограничить кол-во одновременно загружаемых табов, число открытых, но ещё не прочтённых табов и общее число открытых табов.
Чтобы можно было открыть фолдер с несколькими десятками закладок и не бояться перегрузки браузера или процессора.
Обычно открытие всех закладок "массивного" фолдера предполагает последовательную работу с табами - открыл, посмотрел, сделал что надо, закрыл.
Для такого режима такая фича была бы просто незаменима - нет опасения перегрузки браузера и процессора, закладки стоят себе тихонько в очереди и подгружались бы по мере закрытия открытых табов и/или чтения не прочтённых.
Другой случай последовательной работы с табами (вкладками) - это чтение новостных лент (feed'ов) - когда у тебя страница с фидлистами в несколько столбцов (т.е. более 100(!!!) ссылок на новости - каждая новость представлена своим названием или даже частью названия - в одну строку), юзер бегло просматривает такую страницу, кликает на заинтересовавшие его строки-ссылки, открывая эти новости в фоновых вкладках. В принципе он может накликать несколько десятков таких новостей, а потом перейти к их чтению. Но поскольку такой фичи нет, то он на сегодня вынужден кликать малыми порциями, читать и закрывать прочитанные вкладки с новостями, затем опять возвращаться странице с фидами и т.д.
Для такой работы эта фича тоже позарез нужна.
Я могу описать юзер интерфейс, как он мне видится или даже попытаться реализовать эту функцию (как СВ), если мне объяснят как перехватывать урл-ы, следить за числом открытых табов и одновременно загружаемых и определять прочтённые/непрочённые табы... - желание у меня большое, а знания - почти нулевые
Итак: как я вижу юзер интерфейс:
1. Это информер/кнопка на таб баре размером с сжатую вкладку, т.е. где-то 1.5 - 2 em где указано общее число незагруженных УРЛ-ов, дожидающихся загрузки.
2. Левым нажатием на информер/кнопку вызывается меню со списком:
а) незагруженных УРЛ'ов в порядке очерёдности на загрузку - в режиме, когда непрочитанные вкладки не скрыты
б) непрочитанных вкладок + через разделитель - незагруженных УРЛ'ов в порядке очерёдности на загрузку - в режиме, когда непрочитанные вкладки скрыты.
3. В режиме, когда непрочитанные вкладки скрыты:
а) левый клик на незагруженную вкладку-менюитем - загружает и открывает её ультимативно в текущей вкладке, вне зависимости от лимита;
б) левый клик на непрочтённую вкладку-менюитем - открывает её в форграунде в текущей вкладке
в) и г) правый клик - аналогчно а) и б) соответственно, но только в новой вкладке в фоновом режиме (бэкграунд).
д) средний клик - удаляет из очереди (если непрочитанная вкладка - то закрывает её).
4. В режиме, когда непрочитанные вкладки не скрыты: аналогично 3), но поскольку непрочтённых в меню уже не будет, то релевантны только а), в) и д)
5. Естественно, что выбранный менюитем не будет дублироваться (т.е. покинет список и меню).
6. Левый клик (без "путешествия" по меню) эквивалентен левому клику на первый менюитем меню.
7. Средний клик на информер/кнопку - включает/отключает ограничение
8. Правый клик на информер/кнопку - переключает режим скрытия/открытия непрочитанных вкладок
9. Что же касается числовых значений ограничения - то их можно имхо задавать редактированием кода, если в коде эти переменные будут "на видном" месте.
-------------------------
В целом такая кнопка-информер будет как бы продолжением таб бара.
------------------------------------------------------------------------------------------
Я бы с радостью взялся бы за реализацию этой фичи, если меня немного просветят
Отредактировано difabor (14-01-2014 22:54:56)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Я то думал что речь о том что бы открыть все закладки из папки закладок последовательно с таймером что бы не грузить браузер. И думал предложить то же самое + отрывать закладки как вкладки не загружая их. Ну как FF это делает после восстановлении сессии если в настройках включено Не загружать вкладки без запроса Что скажешь?
Добавлено 14-01-2014 22:30:25
bunda1
В перестало работать добавление и удаление закладок двойным ПКМ. Можешь поправить?
Завтра.
Добавлено 14-01-2014 22:36:39
Я бы с радостью взялся бы за реализацию этой фичи, если меня немного просветят
Тут проблема мне не русскому человеку трудно объяснять то что я сам плохо знаю.
Отредактировано bunda1 (14-01-2014 22:37:27)
Отсутствует
bunda1,
1. Если у меня фолдер, где 30 и более закладок, то вряд ли таймер что-то даст. А для фидлистов - тем более.
2. Что значит "то же самое + отрывать закладки как вкладки не загружая их" - я просто не понял. Что значит открывать закладки как вкладки, не загружая их?
3. Основная мысль - подгрузка/загрузка вкладок по мере прочтения/закрытия других - в этом вся соль. Более того - левый клик (без выбора менюитема) должен открывать первый в очереди УРЛ на место текущей вкладки или непрочитанную вкладку делать активной, если она - первая в списке
4. Я немного отредактировал свой пост №8207
5. А если я буду спрашивать? Может так будет проще Вам объяснить мне.
Отредактировано difabor (14-01-2014 22:56:55)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Я то думал что речь о том что бы открыть все закладки из папки закладок последовательно с таймером что бы не грузить браузер. И думал предложить то же самое + отрывать закладки как вкладки не загружая их. Ну как FF это делает после восстановлении сессии если в настройках включено Не загружать вкладки без запроса Что скажешь?
Вот это именно то что нужно.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
2. Что значит "то же самое + отрывать закладки как вкладки не загружая их" - я просто не понял. Что значит открывать закладки как вкладки, не загружая их?
Вот пример:
function getDomain(url) { return url.match(/:\/\/(.[^/]+)/)[1]; }; var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore); var url = "http://www.vesti.kz/world/"; var tab = gBrowser.addTab(null); gSessionStore.setTabState(tab, JSON.stringify({ entries: [ { url: url, title: url } ], lastAccessed: 0, index: 1, hidden: false, attributes: {}, image: "http://www.google.com/s2/u/0/favicons?domain=" + getDomain(url) }));
Отсутствует
Ребята, может кто подскажет почему этим жестом открывает панель закладок пустой, пока не нажмешь на стандартный пункт "Панель закладок".
cmd:function(){var a = document.getElementById("PersonalToolbar");a.collapsed = !a.collapsed;}},
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Вот это именно то что нужно.
Ok
А это не ты спрашивал код для запуска из кнопки флеш плеера на странице:
var embeds = content.document.getElementsByTagName('embed'); Array.slice(embeds).forEach(function(el) { el.playPlugin() });
Отсутствует
difabor пишет2. Что значит "то же самое + отрывать закладки как вкладки не загружая их" - я просто не понял. Что значит открывать закладки как вкладки, не загружая их?
Вот пример:
Выделить кодКод:
function getDomain(url) { return url.match(/:\/\/(.[^/]+)/)[1]; }; var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore); var url = "http://www.vesti.kz/world/"; var tab = gBrowser.addTab(null); gSessionStore.setTabState(tab, JSON.stringify({ entries: [ { url: url, title: url } ], lastAccessed: 0, index: 1, hidden: false, attributes: {}, image: "http://www.google.com/s2/u/0/favicons?domain=" + getDomain(url) }));
Я скопировал этот код.
Затем открыл фолдер с 4-мя закладками и кликнул "открыть всё во вкладках"
Все 4 вкладки открылись, причём загружались они одновременно...
Так что я так и не понял, что это значит...
Можно я буду задавать вопросы? Я постараюсь их задавать с предельной ясностью.
Я даже могу обрисовать алгоритм, как я его представляю.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Тот код положи в кнопку в кладку Код и нажми эту кнопку!
Можно я буду задавать вопросы? Я постараюсь их задавать с предельной ясностью.
Я даже могу обрисовать алгоритм, как я его представляю.
Хорошо попробуем.
Отредактировано bunda1 (14-01-2014 23:59:49)
Отсутствует
difabor
Тот код положи в кнопку в кладку Код и нажми эту кнопку!
:) Нажми на кнопкуdifabor пишетМожно я буду задавать вопросы? Я постараюсь их задавать с предельной ясностью.
Я даже могу обрисовать алгоритм, как я его представляю.Хорошо попробуем.
Сначала - опишу алгоритм в псевдокоде:
var LoadTabMax = 3; //Максимальное число одновременно загружаемых вкладок/табов var LoadTabAct; //Актуальное число одновременно загружаемых вкладок/табов //(как определить сколько табов загружается в данный момент, не знаю, но думаю, что это возможно var AllTabMax = 10; //Максимальное число табов var AllTabАct; //Актуальное число табов (как определить - тоже не знаю) /* Кнопка вылавливает только запросы на открытие фоновых табов/вкладок (то есть в background) */ /* Все запросы на открытие URL в текущей или новой активной вкладке/табе (foreground) нас не касаются */ /* Запросы на открытие фоновых табов/вкладок в браузер не поступают, а "складуруются" в буфере */ /* Сам буфер отправляет в браузер очередной запрос, если: а) он не пустой, и: б) (выполняется разрешающее условие или в) по кликам юзера (об этом отдельно) ) */ //Разрешающее условие очень простое: var Allowed = ((LoadTabAct <= LoadTabMax) && (AllTabAct <= AllTabMax); /* Собственно говоря - это и есть основная работа в автоматическом режиме. Для его реализации требуется: 1. Знать как вылавливать запросы на открытие фоновых табов/вкладок и не пускать их на выполнение 2. Копить их в буфере-списке, который можно будет преобразовать в меню 3. Знать как определять LoadTabAct и AllTabАct 4. Знать как отправлять запросы в браузер, чтобы самому не ловить себя за хвост 5. Обеспечить механизм "интервенции" со стороны юзера (т.е. реакцию на клики меню и кнопки) */
Как Вы видите, я отказался от понятия "не прочитанные вкладки" и как следствие - не требуется режима скрытых непрочитанных вкладок.
То есть юзер интерфейс упростился. Вот, собственно говоря и все вопросы - (пункты 1...5).
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Теперь выглядит лучше но все равно есть не понятные моменты и все вопросы сразу.
Ну да ладна будем решать проблемы по мере поступления. Сначала попробуем запретить открываться больше определенного количества фоновых кладок и получить массив с адресами(буфере-списке) остальных вкладок и автоматически их открывать. Тут проблемы могут быть!
Завтра.P.S. А ты пробовал использовать настройку Не загружать вкладки без запроса
Нет, я даже не знаю о какой кнопке речь и где эта настройка.
P.S. До меня доходит как до жирафа
Сейчас, наконец, до меня дошло, что Вы имели в виду под "открывать закладки как вкладки" - то есть это просто перенос закладок на таб бар, а их актуальное открытие - сделать такую закладку-вкладку активной. Да, теперь я понимаю, что Вы имели в виду, но это - не совсем то...
Цель того, о чём я говорю - это минимизировать отвлекающий фактор - просто иметь десятки вкладок даже не загруженными на таб баре (даже если они каким-то чудом там разместятся) - это дефокусировать пользователя.
Идеальная модель поведения - это иметь приемлемое число вкладок на таббаре, а остальные в списке-буфере, который автоматически подпитывает таббар, когда закрывается очередная вкладка и число вкладок на таббаре становится меньше этого максимума.
А перенос закладок в незагруженные вкладки - подойдёт только для фолдера с малым кол-вом вкладок...
Кроме того, сценарий с фидлистами остаётся вообще в стороне...
Отредактировано difabor (15-01-2014 02:34:55)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
bunda1 а что значит это a в начале — aURI.spec, aRequest?
Обычно так помечают аргументы функций:
https://developer.mozilla.org/en-US/doc … e#Prefixes
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Обычно так помечают аргументы функций:
https://developer.mozilla.org/en-US/doc … e#Prefixes
Понятно, спасибо
bunda1
я создал новый профиль и теперь кнопка Proxy не создаёт пункт в контекстном меню выделенного текста. В остальном кнопка работает, в консоли ошибок нет.
Куда копать?
Отсутствует
А что там за настройки, где они?
А, я вспомнил, я же на старом профиле редактировал подсказку у кнопки. Там помнится было что-то "Показывать пункт...."
Я видно тогда включил что надо, а потом этот пункт из подсказки удалил.
Что теперь надо включить (создать) в about:config чтоб появился пункт меню?
Отредактировано rbfyec (15-01-2014 21:08:14)
Отсутствует
Подскажите код кнопки что бы заполнить поле формы на странице такого вида
... <body> <div...></div> <form><div ...></div> <div id="ВОТЭТОТ"> <div ...>...</div> <div class="ВОТЭТОТ2"> <input name="ВОТЭТОПОЛЕ!!!">... </div> </div> </form> ...
Отсутствует
difabor
Ну да ладна будем решать проблемы по мере поступления. Сначала попробуем запретить открываться больше определенного количества фоновых кладок и получить массив с адресами(буфере-списке) остальных вкладок и автоматически их открывать. Тут проблемы могут быть!
var allTabMax = 34; // максимальное число табов var tabArray = []; // Отслеживать открытие, закрытие вкладок и восстановление сессии ..... function tabHandler(e) { var tab = e.target; var selTabPos = gBrowser.selectedTab._tPos; // прятать и закрывать лишние вкладки, сохранить их адреса в массив if ( e.type !== "TabClose" && gBrowser.tabs.length > allTabMax ) { tab.style.display = 'none'; setTimeout(function() { gBrowser.removeTab( tab ); }, 50); tabArray.push( e.type == 'TabOpen' ? tab.label : tab.linkedBrowser.contentDocument.location ); } // открывать сохранение адреса и удалять их из массива if ( e.type == "TabClose" && gBrowser.tabs.length < allTabMax && tabArray.length > 0 ) { gBrowser.loadOneTab( (tabArray.shift()).trim(), null, null, null, true, false); } }; var container = gBrowser.tabContainer; addEventListener("TabOpen", tabHandler, true, container ); addEventListener("TabClose", tabHandler, false, container ); addEventListener("SSTabRestoring", tabHandler, false, container );
Добавлено 16-01-2014 00:04:50
Мне не удалось заблокировать открытие новых кладок, приходится их не заметно удалять и за чего чуток дёргается панель вкладок. Код сырой.
Отредактировано bunda1 (16-01-2014 00:04:50)
Отсутствует
difabor
Ну да ладна будем решать проблемы по мере поступления. Сначала попробуем запретить открываться больше определенного количества фоновых кладок и получить массив с адресами(буфере-списке) остальных вкладок и автоматически их открывать. Тут проблемы могут быть!
Выделить кодКод:
var allTabMax = 34; // максимальное число табов var tabArray = []; // Отслеживать открытие, закрытие вкладок и восстановление сессии ..... function tabHandler(e) { var tab = e.target; var selTabPos = gBrowser.selectedTab._tPos; // прятать и закрывать лишние вкладки, сохранить их адреса в массив if ( e.type !== "TabClose" && gBrowser.tabs.length > allTabMax ) { tab.style.display = 'none'; setTimeout(function() { gBrowser.removeTab( tab ); }, 50); tabArray.push( e.type == 'TabOpen' ? tab.label : tab.linkedBrowser.contentDocument.location ); } // открывать сохранение адреса и удалять их из массива if ( e.type == "TabClose" && gBrowser.tabs.length < allTabMax && tabArray.length > 0 ) { gBrowser.loadOneTab( (tabArray.shift()).trim(), null, null, null, true, false); } }; var container = gBrowser.tabContainer; addEventListener("TabOpen", tabHandler, true, container ); addEventListener("TabClose", tabHandler, false, container ); addEventListener("SSTabRestoring", tabHandler, false, container );Добавлено 16-01-2014 00:04:50
Мне не удалось заблокировать открытие новых кладок, приходится их не заметно удалять и за чего чуток дёргается панель вкладок. Код сырой.
Большое спасибо!
Я скопировал код и он действительно не даёт открываться вкладкам при превышении предела (я его сделал 10, но это неважно).
Что касается дёргания панели вкладок, то надо очень внимательно присматриваться, чтобы это дёргание заметить. То есть здесь имхо - всё отлично - нет проблем с дёрганием.
Однако у меня возникли другие вопросы.
1. Куда надо кликать, чтобы увидеть список незаметно удалённых вкладок (меню)?
2. Когда я удаляю какую-то вкладку (кроме первой из вновь загруженных) и их становится меньше предела, удалённые вкладки не восстанавливаются.
То есть: они подгружаются только, если я удаляю первую из серии тех, что хотел открыть - для закладок и последнюю из открытых для ссылок.
Кроме того правильно подгружается вкладка, если я открывал закладки.
Если же я открывал ссылки со страницы, то вместо закрытых вкладок подгружается пустая страница (думаю, что about:newtab или about:blank)
То есть УРЛы в этом случае куда-то деваются и только в случае с закладками они подгружаются правильно.
3. Как я понял, этот код пока не ограничивает число одновременно загружаемых вкладок. Вы планируете что-то в этом направлении?
-------------------------------
Что касается меню - то Вы в своё время меня научили как его создавать.
Поэтому если мне объяснить как извлечь список (по-идее, как я понял, список находится где-то в container'е) то я бы (надеюсь) мог бы сам создать меню и юзер интерфейс.
Ещё раз спасибо!
Отредактировано difabor (16-01-2014 04:19:40)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует