Возможно ли решить вот такое с помощью CB?
у меня в настройках FF установлено, что все файлы типа torrent должны просто сохраняться на диск:
но мне нужно ещё сделать так, чтобы при долгом нажатии по ссылке на него, он открывался сразу в uTorrent. Как-будто в настройках выставлено вот так:
Можно чего-нибудь придумать?
Отсутствует
Подскажите кто знает. Хочу посадить на жест CB Mouse Gestures+ открытие PanelUI. Вроде открывает, но дополнительно вылазят ещё панели. Что с этим кодом не так?
Выделить кодКод:
cmd:function(){document.getElementById("PanelUI-popup").openPopup(null,"",350,150,false,false);}}
Я попробовал твой код на CB Mouse Gestures+ и у меня всё нормально а что это за панель
дополнительная, откуда?
Отсутствует
bunda1
а что это за панель
дополнительная, откуда?
Профиль чистый, без доп.панелей, а выскакивает панель с таким id=customizationPanelItemContextMenu. И ещё, почему-то жест срабатывает только после того как нажмешь на кнопку меню, иначе не хочет.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Профиль чистый, без доп.панелей, а выскакивает панель с таким id=customizationPanelItemContextMenu. И ещё, почему-то жест срабатывает только после того как нажмешь на кнопку меню, иначе не хочет.
var panel = document.getElementById("PanelUI-popup"); panel.hidden = false; panel.openPopup(null,"",350,150,false,false);
или
var panel = document.getElementById("PanelUI-popup"); document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50);
или
var panel = document.getElementById("PanelUI-popup"); if ( panel.hidden ) { document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50) } else panel.openPopup(null,"",350,150,false,false);
Отредактировано bunda1 (13-10-2014 23:47:06)
Отсутствует
как можно сделать (или может уже такое есть)
нужна кнопка чтобы копировала содержимое адресной строки в файл
раньше пользовал linkreader ,но он только под винду заточен ,а мне нужно под linux
Никто не знает столько,сколько не знаю Я.
Отсутствует
Всё равно вылазит доп.панель, оставил средний вариант.
var panel = document.getElementById("PanelUI-popup"); var contextMenu = document.getElementById("customizationPanelItemContextMenu") contextMenu.hidden = true; document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50); contextMenu.hidden = false;
Отсутствует
как можно сделать (или может уже такое есть)
нужна кнопка чтобы копировала содержимое адресной строки в файл
раньше пользовал linkreader ,но он только под винду заточен ,а мне нужно под linux
А что за файл и как сохранить с запросом или куда?
Отсутствует
У меня к gBrowser приделан EventListener на событие DOMContentLoaded. Он запускает нужную функцию, все ОК.
Вопрос: это при каждом обновлении страницы будет добавляться еще один EventListener?
Надо ли их удалять?
И вообще, в каких случаях надо листенер удалять, а когда не надо?
И ещё вопрос. Функцией open('', '', 'параметры') я открываю окошко. Я хочу кликом в этом окошке делать определенное действие в родительском окне.
А как обратиться к родительскому окну? Я пробовал проверить мое_окошко.opener.location - оно мне показывает chrome://browser/content/browser.xul
Что это за адрес?
Отсутствует
Inko7
...все файлы типа torrent должны просто сохраняться на диск
...при долгом нажатии по ссылке на него, он открывался сразу в uTorrent
у меня была такая же проблема, только обратная: всегда открывал в уторренте, а иногда требовалось сохранить торрент-файл на диск
для себя решил это так: в настройках браузера, в закладке "приложения", для этого типа файла выставил режим "Всегда спрашивать". Теперь каждый раз спрашивает действие. Слегка геморно, но по другому никак.
Если знатоки-кнопкописатели все-таки смогут как-то изменять действие для типа файла "на лету", то будет просто здорово!
Добавлено 13-10-2014 21:45:25
Оффтоп:
bunda1
С юбилеем в 3000 постов!!!
Отредактировано pofigist (13-10-2014 21:45:25)
Отсутствует
bunda1, можно как-то настроить чтобы PanelUI-menu-button в твоём коде (№8979) появлялась в том месте, где закончился жест?
а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана
Отсутствует
можно как-то настроить чтобы PanelUI-menu-button в твоём коде (№8979) появлялась в том месте, где закончился жест?
а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана
В FireGestures есть же своя схема Открыть меню в Диалоговый тип отлично открывает и всегда у курсора, что не устраивает?
Отсутствует
bunda1, можно как-то настроить чтобы PanelUI-menu-button в твоём коде (№8979) появлялась в том месте, где закончился жест?
а то у меня в FireGestures она всплывает всегда в левом верхнем участке экрана
Если ты про этот код:
var panel = document.getElementById("PanelUI-popup"); document.getElementById("PanelUI-menu-button").click(); setTimeout(function() panel.moveTo(350,150), 50);
то он должен открывать в центре странице.
bunda1
С юбилеем в 3000 постов!!!
Отсутствует
то он должен открывать в центре странице.
Ну у меня не в центре.
Удобно когда делаешь жест, продолжить движение на всплывающее меню.
Отсутствует
pofigist
выставил режим "Всегда спрашивать"
мне так уже посоветовали и я переключился пока в этот режим
но по мне, выбирать каждый раз слегка напрягает...
моё соотношение скачать торрент и открыть торрент где-то 70:30
просто делай пкм по ссылке на торрент и выбирай сохранить объект как...
а можно ли так:
или в меню пкм по ссылке на торрент добавить строку открыть в uTorrent
или при долгом клике по ссылке открыть ее в uTorrent
Отсутствует
а можно ли так:
или в меню пкм по ссылке на торрент добавить строку открыть в uTorrent
или при долгом клике по ссылке открыть ее в uTorrent
Долгом клике по ссылке не получится потому что не известно как различить ссылку на торрент. А вот через контекстное меню легко, вот:
// Добавить новый пункт "Открыть ссылку в uTorrent" в контекстном меню ссылок на странице, от 14.10.2014. (function() { var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Открыть ссылку в uTorrent"); var contextMenu = document.getElementById("contentAreaContextMenu") contextMenu.appendChild( menuitem ); addDestructor(function() contextMenu.removeChild( menuitem ) ); addEventListener("popupshowing", function() menuitem.hidden = !gContextMenu.onLink, false, contextMenu ); addEventListener("click", function(e) { var linkUrl = gContextMenu.getLinkURL(); var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath("C:\\Program Files\\uTorrent\\uTorrent.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init( file ); process.run( false, [linkUrl], 1 ); }, false, menuitem ); })();
P.S. проверь file.initWithPath("C:\\Program Files\\uTorrent\\uTorrent.exe");
Отредактировано bunda1 (14-10-2014 11:25:11)
Отсутствует
bunda1
Долгом клике по ссылке не получится потому что не известно как различить ссылку на торрент
Да и не нужно её различать. Я буду просто знать, что долгий клик использовать только для ссылок на torrent-файлы. Просто так все-равно удобнее, чем через контекстное меню.
вот через контекстное меню легко
да, так пункт появляется, но внизу меню, а хотелось бы в верхней группе пунктов
Отсутствует
самое главное и печальное то, что ссылка, отправляемая так в uTorrent не хочет добавляться как закачка, а хочет добавиться, как RSS-лента
А ты на каком сайте качаешь, на RuTracker.org?
Да и не нужно её различать. Я буду просто знать, что долгий клик использовать только для ссылок на torrent-файлы. Просто так все-равно удобнее, чем через контекстное меню.
Сперва разберёмся как открыть ссылки.
да, так пункт появляется, но внизу меню, а хотелось бы в верхней группе пунктов
вместо
Отредактировано bunda1 (14-10-2014 12:48:52)
Отсутствует
или при долгом клике по ссылке открыть ее в uTorrent
На крайний случай, можно попробавать нечто весьма тупое.
mouseup, если задержался, — переключаем на «...(по умолчанию)»,
mousedown — переключаем на «Сохранить файл».
(() => { var obj = { delay: 500, stateSave: false, mousedownTime: 0, get ms() { delete this.ms; return this.ms = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService); }, get hs() { delete this.hs; return this.hs = Cc["@mozilla.org/uriloader/handler-service;1"].getService(Ci.nsIHandlerService); }, get info() { delete this.info; var info = Object.create(this.ms.getFromTypeAndExtension("application/x-bittorrent", "torrent")); info.alwaysAskBeforeHandling = false; return this.info = info; }, handleEvent: function(e) { if (e.button == 1 || e.detail != 1 || e.ctrlKey || e.shiftKey || e.altKey) return; this[e.type](); }, mousedown: function() { this.mousedownTime = Date.now(); this.stateSave || this.setState(true); }, mouseup: function() { if (Date.now() - this.mousedownTime < this.delay) return; this.stateSave && this.setState(); }, setState: function(save) { if (save) { this.info.preferredAction = this.info.saveToDisk; this.stateSave = true; } else { this.info.preferredAction = this.info.useSystemDefault; this.stateSave = false; } this.hs.store(this.info); } }; for(var type of ["mousedown", "mouseup"]) addEventListener(type, obj, false, gBrowser); addDestructor(obj.setState, obj); })();
Отсутствует
bunda1
А ты на каком сайте качаешь, на RuTracker.org?
использую различные трекеры (nnm-club.me, rutor.org, kinozal.tv) и рутрекер в том числе
... вместо
все равно немного не там, ну да ладно...
Dumby
можно попробавать нечто весьма тупое
Как раз то, о чем я и просил!!!
Слегка не понял в коде, зачем там отслеживание СКМ?
А так все работает, как надо!!!
Простой ЛКМ - сразу диалог сохранения файла
Долгий - приглашение открыть файл
Отсутствует
Слегка не понял в коде, зачем там отслеживание СКМ?
Это просто так, без смысла, если мешает — удали.
хоть и стоит галка "Выполнять автоматически", но это окно появляется каждый раз. Его можно как-то пропустить?
Говорят, это из-за http-заголовка «Content-Disposition».
Вот, попробовал срисовать с расширения InlineDisposition.
(() => { const id = _id + "-" + Components.stack.lineNumber; if (Application.storage.get(id, null)) return; Application.storage.set(id, {}); addDestructor(() => Application.storage.set(id, null)); const topic = "http-on-examine-response"; const cd = "Content-Disposition"; var re = /^\s*attachment/i; function onResponse(channel) { try { channel.QueryInterface(Ci.nsIHttpChannel); var disp = channel.getResponseHeader(cd); channel.loadFlags & channel.LOAD_DOCUMENT_URI && channel.contentType == "application/x-bittorrent" && re.test(disp) && channel.setResponseHeader(cd, disp.replace(re, "inline"), false); } catch(ex) {} } Services.obs.addObserver(onResponse, topic, false); addDestructor(() => Services.obs.removeObserver(onResponse, topic)); })();
Ну а с моим вопросом как же?
Вопрос не сопровождается примерами кода. Это нехорошо.
А насчёт адреса — сделай так: открой новую вкладку,
вставь этот адрес в адресную строку и нажми enter.
Возможно содержимое вкладки покажется тебе знакомым.
Отсутствует
У меня к gBrowser приделан EventListener на событие DOMContentLoaded. Он запускает нужную функцию, все ОК.
Вопрос: это при каждом обновлении страницы будет добавляться еще один EventListener? Надо ли их удалять?
Если ты про это 03-10-2014 10:37:52 то не надо удалять и не добавляться еще один EventListener.
И вообще, в каких случаях надо листенер удалять, а когда не надо?
Тут так просто не объяснишь и вряд ли тут кто объяснит, все тут люди занятые, я сам не достаточно знаю и медленно пишу на русском. Лучше задавай вопросы про конкретные ситуации и коды. Может тут загляни Event reference | MDN
А как обратиться к родительскому окну? Я пробовал проверить мое_окошко.opener
Именно так - мое_окошко.opener Может тут посмотри Редактировать сохранённые логины и пароли
chrome://browser/content/browser.xul
Что это за адрес?
Открой этот адрес и вопросы отпадут.
Отредактировано bunda1 (14-10-2014 18:33:24)
Отсутствует