Страницы: 1
Есть такой плугин для FF Media Sniffer Все что он делает - это ловит ссылку на поток из flashplayer-a(или html5) и добавляет эту ссылку в меню страницы в виде пункта. У пункта(~ов) один и тотже id = "mediasniffer".
И если зайти на сайт где поток отдается частями, то и пунктов этих будет расти немерянно, на каждый "кусочек" будет +menuitem. Подскажите , как засунуть это все в подменю. В идеале чтоб оно вообще открывалось только по клику(игнор по наведению мыши) но это не обязательно.
картина такая у этого расширения, пункты меню
код самого расширения это один файл 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); } }
// ------------- Для расширения 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")); })();
Отредактировано xoreax (08-11-2016 00:09:35)
Отсутствует
xoreax
Вдруг будет интересно...
Точно так же находит прямые ссылки на видео и открывает их во внешних плеерах.
Video Assistant :: Дополнения Firefox
Отсутствует
Страницы: 1