>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Обсуждение расширений http://forum.mozilla-russia.org/viewforum.php?id=28 >Доделать/изменить расширение Media Sniffer http://forum.mozilla-russia.org/viewtopic.php?id=70859 |
xoreax > 08-11-2016 00:07:51 |
Есть такой плугин для FF Media Sniffer Все что он делает - это ловит ссылку на поток из flashplayer-a(или html5) и добавляет эту ссылку в меню страницы в виде пункта. У пункта(~ов) один и тотже id = "mediasniffer". код самого расширения это один файл bootstrap.js(оно очень маленькое 8kb). Кусок с пунктом меню, если пральна понял, такой: скрытый текст Выделить код Код:function showContextMenu(event) { var popup = event.target || event.originalTarget; if (popup !== event.currentTarget) return; var win = popup.ownerDocument.defaultView; var doc = win.document; removeChild(popup); var media = win.content._media; if (!(media && media.length)) return; for (var i = 0, len = media.length; i < len; i++) { var m = media[i]; var mi = doc.createElement('menuitem'); mi.setAttribute('label', m.label); mi.setAttribute('tooltiptext', m.url); mi.setAttribute('id', 'mediasniffer'); mi.addEventListener('click', copyURL); popup.insertBefore(mi, popup.firstChild); if (!sep) { var sep = doc.createElement('menuseparator'); sep.setAttribute('id', 'mediasniffer-sep'); var insPos = doc.getElementById('mediasniffer'); popup.insertBefore(sep, insPos.nextSibling); } } ------- зы. получилось для него сделать листенеры для открытия ссылок в других программах, через [CB] а собрать эти пункты в одно меню не могу. CB код, для расширения, добавляет действия Выделить код Код:// ------------- Для расширения MediaSnifer действия для кликов пункту меню -------------------------------------------------------- (function() { addEventListener("click", function(e) { if (e.target.id != "mediasniffer") return; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); var ref = ('"' + content.document.location + '"'); // скачать через wget или aria if ( e.button == 0 ) { var url = ('"' + e.target.getAttribute("tooltiptext") + '"'); var title = convertFromUnicode("Windows-1251", gBrowser.mCurrentTab.label); file.initWithPath(file.path + "\\Soft\\wget\\wgetfile.cmd"); // file.initWithPath(file.path + "\\Soft\\Tools\\aria2.cmd"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [url, title.replace(/(?:@|&|\\|\/|\.|,|\||\:)+/g,'').slice(0,65), ref], 3); } // скопировать ссылку-подсказку if ( e.button == 1 ) { var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); var tt = e.target.getAttribute("tooltiptext"); gClipboard.write(tt); alertsService.showAlertNotification(e.target.image, null, "Скопировал ссылку Mediasniffer-a", false, "", null, ""); } // Открыть в Smplayer if ( e.button == 2 ) { // var param = "-add-to-playlist"; var url = e.target.getAttribute("tooltiptext"); var file = Services.dirsvc.get('ProfD', Ci.nsIFile); // file.initWithPath(file.path + "\\Soft\\SMplayer\\smplayer.exe"); file.initWithPath(file.path + "\\Soft\\CherryPlayer\\CherryPlayer.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [url], 1 ); } }, false, document.getElementById("contentAreaContextMenu")); })(); Подскажите с кодом для подменю, чтоб добавить его в расширение. |
oleg.sgh > 08-11-2016 11:15:50 |
xoreax |