У меня при скачке некоторых файлов открывается именно эта страница, да и ещё при других обстоятельствах, приходиться всякий раз закрывать вручную, было бы неплохо автоматом закрывать.
Ага. Но сначала открывается эта страница, и только потом, спустя какое-то время, начинается скачивание. А если автомат закроет вкладку раньше, чем скачивание начнётся - удобно будет?
В общем, я вот такую корявку родил для вкладки "Инициализация" (с задержкой в 2 секунды перед закрытием):
addEventListener("TabOpen", function() { // closes duplicate tabs and about:blank and about:newtab function CloseDupeTabs() { var browser = getBrowser() , tab, tabs = browser.mTabContainer.childNodes , url, urlMap = {"about:newtab": true, "about:blank": true} ; // start adding urls to a map // if they are already present in a map, then close them for (var i = 0; i < tabs.length; i++) { tab = tabs[i]; url = browser.getBrowserAtIndex(i).currentURI.specIgnoringRef; if (url in urlMap) browser.removeTab(tab); else urlMap[url] = true; } }; var timeout = setTimeout(CloseDupeTabs, 2000); });
Но что вы будете делать, когда понадобится новую вкладку открыть?
Отредактировано yup (02-04-2017 12:54:38)
Отсутствует
yup
Про остальные не знаю, а вот "about:blank". У меня при скачке некоторых файлов открывается именно эта страница, да и ещё при других обстоятельствах, приходиться всякий раз закрывать вручную, было бы неплохо автоматом закрывать. Если не трудно конечно.
// Блокировать открытие указаных адрессов, от 02.04.2017. ..................... (()=> { var urls = ["about:newtab", "about:blank"]; function stopSpecificURL(aURI) { if ( ~urls.indexOf(aURI) ) return true; }; var handle = gBrowser.addTab; eval("gBrowser.addTab = " + handle.toString().replace('{', '{ \n\n if (stopSpecificURL(aURI)) return;')); addDestructor(()=> eval("gBrowser.addTab = " + handle) ); })();
Отсутствует
yup
bunda1
Спасибо.
yup
Вот только и дублированные вкладки код закрывает, что для меня не есть гут, мне нужно только about:blank чтобы закрывался.
Отредактировано villa7 (02-04-2017 18:07:53)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
bunda1
Спасибо. Но, при скачке, открывает новое окно и тут же закрывает его, в отличии от обычного поведения когда открывается новая вкладка. Вот вам на пробу - http://sendfile.su/1323266
yup
Ваша работает. Спасибо.
Новая вкладка у меня сторонняя уже много лет.
villa7
Секцию надо закомментировать. Вот:
// Блокировать открытие about:blank и about:newtab 02.04.2017. addEventListener("TabOpen", function() { // closes duplicate tabs and about:blank and about:newtab function CloseDupeTabs() { var browser = getBrowser() , tab, tabs = browser.mTabContainer.childNodes , url, urlMap = {"about:newtab": true, "about:blank": true} ; // start adding urls to a map // if they are already present in a map, then close them /*for (var i = 0; i < tabs.length; i++) { tab = tabs[i]; url = browser.getBrowserAtIndex(i).currentURI.specIgnoringRef; if (url in urlMap) browser.removeTab(tab); else urlMap[url] = true; }*/ }; var timeout = setTimeout(CloseDupeTabs, 2000); });
Отредактировано _zt (02-04-2017 19:35:46)
Отсутствует
villa7
Достаточно удалить из кода строчку
_zt
Там так много закомментировано, что вообще ничего закрывать не будет
Отредактировано yup (02-04-2017 19:32:52)
Отсутствует
Проверил. Не закрывает. Ибо делать это должна команда browser.removeTab(tab), а она внутри комментария.
Может, код сейчас в кнопке отличается от предложенного?
(Я, бывает, после редактирования выхожу через "Отмена", а не "ОК" - со всем из этого вытекающим.)
Или закрывает кто-то другой (кнопка/дополнение).
Отредактировано yup (02-04-2017 19:48:35)
Отсутствует
bunda1
Спасибо. Но, при скачке, открывает новое окно и тут же закрывает его, в отличии от обычного поведения когда открывается новая вкладка. Вот вам на пробу - http://sendfile.su/1323266
// Блокировать открытие указаных адрессов, от 02.04.2017. ..................... (()=> { var urls = ["about:newtab", "about:blank"]; function stopSpecificURL(aURI, tab) { ~urls.indexOf(aURI) && setTimeout(()=> gBrowser.removeTab(tab), 500); }; var handle = gBrowser.addTab; eval("gBrowser.addTab = " + handle.toString().replace('return t;', 'stopSpecificURL(aURI, t); return t;')); addDestructor(()=> eval("gBrowser.addTab = " + handle) ); })();
Отсутствует
Страница "Изменить" похоже имеет адрес about:blank, так что тоже не открывается.
Для варианта от bunda1 изменение будет таким:
(() => { var urls = ["about:newtab", "about:blank"]; function stopSpecificURL(aURI, tab) { ~urls.indexOf(aURI) && setTimeout(() => { if (!tab.getAttribute("customizemode")) gBrowser.removeTab(tab)}, 500); }; var handle = gBrowser.addTab; eval("gBrowser.addTab = " + handle.toString().replace('return t;', 'stopSpecificURL(aURI, t); return t;')); addDestructor(() => eval("gBrowser.addTab = " + handle)); })();
Отсутствует
bunda1
Ваша кнопка добавленный адрес не закрывает, конкретно этот - "https://wdfiles.ru/thank.html"
А вот и закрывает:
// Блокировать открытие указаных адрессов, от 02.04.2017. ..................... (()=> { var urls = ["about:newtab", "about:blank", "https://wdfiles.ru/thank.html"]; function stopSpecificURL(aURI, tab) { ~urls.indexOf(aURI) && setTimeout(()=> !tab.getAttribute("customizemode") && gBrowser.removeTab(tab), 500); }; var handle = gBrowser.addTab; eval("gBrowser.addTab = " + handle.toString().replace('return t;', 'stopSpecificURL(aURI, t); return t;')); addDestructor(()=> eval("gBrowser.addTab = " + handle) ); })();
Отсутствует
Таймаут не работает.
Что значит "не работает"?
К тому же у меня сейчас есть чистенькая, свеженькая и пока не удалённая версия 52, и я на ней всё отрабатывал и проверял, прежде чем сюда писать.
Добавлено 03-04-2017 00:47:44
А вот и закрывает:
Там другая проблема есть, прямо противоположная: из-за достаточно короткой задержки может закрывать то, что закрывать не надо.
Дело в том, что пока новая вкладка находится в состоянии ожидания установления соединения с сервером, её URL - "about:blank", и если за полсекунды от сервера ответ не пришёл - вкладка убивается.
Отредактировано yup (03-04-2017 00:47:44)
Отсутствует
_zt
Всё очень просто: обсуждаемая кнопка блокирует не открытие URL, а открытие URL в новой вкладке. Открытию сайта в уже существующей вкладке она никак не препятствует. (Запроса такого не было.)
Отредактировано yup (03-04-2017 01:59:35)
Отсутствует
Там другая проблема есть, прямо противоположная: из-за достаточно короткой задержки может закрывать то, что закрывать не надо.
Дело в том, что пока новая вкладка находится в состоянии ожидания установления соединения с сервером, её URL - "about:blank", и если за полсекунды от сервера ответ не пришёл - вкладка убивается.
Я такой глюк не наблюдаю даже если открыть не существующий адрес.
Отсутствует
Я такой глюк не наблюдаю даже если открыть не существующий адрес.
В такой ситуации и у меня не закрывалось. Возможно, потому, что это другой этап процесса - ожидание ответа не от сервера HTTP, а от сервера DNS.
Но вчера вечером во время отладки скрипта мне понадобилось в FF 52 открыть введённый адрес в новой вкладке. Жму Ctrl-Enter, как привык Seamonkey, а ничего не происходит. Решил посмотреть справку. Жму "Справка" > "Сочетания клавиш" - открывается новая вкладка, в которой FF лезет на родной сайт, и через полсекунды эта вкладка, пустая ещё, закрывается (текст внизу в это время - что-то вроде: "Ожидание ответа сервера").
Повторяю процедуру - тот же результат. Третий раз делаю - тот же самый эффект.
Увеличил в скрипте задержку - страница открылась (узнал из неё, что в FF Ctrl-Enter зачем-то изменили на Alt-Enter).
Возвращаю задержку в исходные 500 мс - опять попасть не могу, закрывается вкладка.
(Через несколько часов, ночью уже, когда нагрузка на сеть спала, начал нормально попадать и при 500 мс, и даже при 100 мс.)
Отсутствует
yup
Все верно. По поводу открытия адресов.
bunda1
Извиняюсь. Сам не понял принцип действия.
Теперь новая проблема. Ставил таймаут и 2000 и 5000. Вот пример страницы, при клике по любому файлу открывается about:blank в котором позже открывается страница загрузки, но кнопка тут же закрывает страницу загрузки, даже если она уже успела прорисоваться и в адресной строке давно ее адрес, но еще не загрузилась полностью...
В общем, пока единственно рабочий вариант, это удалить about:blank из любой кнопки. Может все таки найдете решение?
Отредактировано _zt (03-04-2017 12:48:36)
Отсутствует
при клике по любому файлу открывается about:blank в котором позже открывается страница загрузки, но кнопка тут же закрывает страницу загрузки, даже если она уже успела прорисоваться и в адресной строке давно ее адрес, но еще не загрузилась полностью...
Да, там, действительно, в функцию создания вкладки передаётся адрес "about:blank", а дальше изменениями в адресной строке код кнопки уже не интересуется.
Могу предложить модификацию своего варианта кнопки, который, можно сказать, именно адресную строку и анализирует:
// closes duplicate tabs and about:blank and about:newtab addEventListener("TabOpen", function() { setTimeout(function() { var browser = getBrowser() , tab, tabs = browser.mTabContainer.childNodes , url, urlMap = ["about:blank", "https://wdfiles.ru/thank.html"] ; // start adding urls to a map // if they are already present in a map, then close them for (var i = 0; i < tabs.length; i++) { tab = tabs[i]; url = browser.getBrowserAtIndex(i).currentURI.specIgnoringRef; if ((~urlMap.indexOf(url)) && !tab.getAttribute("customizemode")) browser.removeTab(tab); } }, 500); });
Отредактировано yup (03-04-2017 14:04:52)
Отсутствует
Подскажите пожалуйста, у меня все кнопки находятся в одной кнопке, чтобы загружались все сразу. Я ее, одну, вынес на панель навигации и скрыл стилем.
И все же хочется чтобы каждая кнопка была одельно в разделе кустом бутонс, но как сделать что бы они все загружались сразу не будучи размещенными на панеле навигации?
Отредактировано Stakhovsky (03-04-2017 14:12:47)
Отсутствует
как сделать что бы они все загружались сразу не будучи размещенными на панеле навигации?
Существует радикальное решение: расширение userChromeJS. Его скрипт - это аналог вкладки "Инициализация" кнопок Custom Buttons.
Отсутствует
Stakhovsky
Так же стилем каждую скрывать.
Добавлено 03-04-2017 14:30:19
yup
В последней версии кода как дубликат вкладки оставить?
Отредактировано villa7 (03-04-2017 14:30:19)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует