>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >ImageToolbar++ http://forum.mozilla-russia.org/viewtopic.php?id=4402 |
J7ReW > 03-08-2005 13:09:47 |
Уважаемые гуру! |
Anton > 04-08-2005 23:39:47 |
Image Toolbar 0.5 Если я правильно понял вопрос, то в файле imagetoolbarOverlay.js надо найти функцию imageToolbarCopyImage и заменить её тело на следующую пару строчек: Проверял на 1.0.6 с TBE 1.14.2005071301, а также без TBE. |
J7ReW > 05-08-2005 12:09:20 |
Замена тела функции на код
не помогла, сработало это: Спасибо за подсказку!!! |
J7ReW > 05-08-2005 12:55:43 |
Вот так всегда... Еще идея появилась: |
Anton > 05-08-2005 21:29:48 |
J7ReW пишет
%| |
J7ReW > 05-08-2005 22:09:41 |
Все для ускорения серфинга: при клике по |
Anton > 05-08-2005 22:42:28 |
J7ReW пишет
Значит так. Я не ахти какой программист (в т. ч. и на JS); кроме того, у моей лени день рождения был вчера, а у меня - сегодня, так что ограничусь кое-какими соображениями, не проверяя их на практике. Итак:
в конец функции imageToolbarSaveImage добавляем
здесь надо получить доступ к объемлющей картинку ссылке ? строчку функции imageToolbarCopyImage надо будет заменить как-то так: Выделить код Код:var url = imageToolbarCurrentImage.parentNode.href; // или ...parentNode.getAttribute('href'); ?? |
J7ReW > 08-08-2005 11:49:07 |
Anton, огромное вам спасибо!!! Все получилось. Выделить код Код:function imageToolbarSaveImage(e) { // function by MonkeeSage, modified by Cusser if (!e) var e = window.event; document.popupNode = imageToolbarCurrentImage; var url = imageToolbarCurrentImage.src; // convenience variable var filename = url.substring(url.lastIndexOf('/') + 1) if (url.indexOf("?") != -1 && url.indexOf("=") != -1) { // sniff the real filename from the headers... var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', url, false); // syncronous transfer httpRequest.overrideMimeType('text/xml'); // prevent leakage httpRequest.send(null); // data comes after send for sync'd GET, no callbacks needed... try { var fname = httpRequest.getResponseHeader('content-disposition'); if (fname) { if (/filename="?([^";]+)"?/.test(fname)) { fname = RegExp.$1; } else { delete fname; } } else { fname = httpRequest.getResponseHeader('content-location'); } if (fname) { filename = fname; } } catch(e) { // foobar! using default filename... } } const nsILocalFile = Components.interfaces.nsILocalFile; imageToolbarFolder = imageToolbarPrefs.getComplexValue("imageFolder", nsILocalFile); var savefile = imageToolbarFolder; if (!savefile.exists()) { var bundle = document.getElementById("imageToolbarStrings"); var nofolder = bundle.getString("nofolder"); alert(nofolder); var success = imageToolbarSelectFolder(); if (success == false) return; } savefile.appendRelativePath(filename); var overwrite = imageToolbarPrefs.getBoolPref("overwrite"); //if (imageToolbarButtonAction(e,imageToolbarArray[0]) == false) { var qqq = false; if (qqq == false) { if (!imageToolbarSaveDelay) { imageToolbarSaveDelay = true; if (savefile.exists() && overwrite == false) savefile.createUnique(0, 0777); try { // Support for Download Sort if (ds_getTargetFile) { saveURL(url, null, null, false, true); window.setTimeout("imageToolbarSaveDelay = false",250); return; } } catch (e) {} // If Download Sort is not enabled, use default method saveURL(url, savefile, null, false, true); window.setTimeout("imageToolbarSaveDelay = false",250); } } else { // Save prompt var ext = filename.substring(filename.lastIndexOf('.'),filename.length); /* Download Sort code duplicated to provide adequate support */ try { var foundExt = checkForExtension(ext); // Returns -1 if not found if (foundExt != -1) { var aSource = ds_RDF.GetResource("NC:ExtensionRoot:" + ext); var locRDF = ds_RDF.GetResource("http://home.netscape.com/NC-rdf#location"); var autoLocation = ds_datasource.GetTarget(aSource, locRDF, true); autoLocation = autoLocation.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } } catch (e) {} if (autoLocation) { savefile.initWithPath(autoLocation); savefile.appendRelativePath(filename); } savePrompt(url, savefile, filename, autoLocation); } if (e.button==2) getBrowser().removeCurrentTab(); } function imageToolbarCopyImage(e) { // function by MonkeeSage, modified by Cusser if (!e) var e = window.event; document.popupNode = imageToolbarCurrentImage; var url = imageToolbarCurrentImage.parentNode.href; var filename = url.substring(url.lastIndexOf('/') + 1) if (url.indexOf("?") != -1 && url.indexOf("=") != -1) { // sniff the real filename from the headers... var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', url, false); // syncronous transfer httpRequest.overrideMimeType('text/xml'); // prevent leakage httpRequest.send(null); // data comes after send for sync'd GET, no callbacks needed... try { var fname = httpRequest.getResponseHeader('content-disposition'); if (fname) { if (/filename="?([^";]+)"?/.test(fname)) { fname = RegExp.$1; } else { delete fname; } } else { fname = httpRequest.getResponseHeader('content-location'); } if (fname) { filename = fname; } } catch(e) { // foobar! using default filename... } } const nsILocalFile = Components.interfaces.nsILocalFile; imageToolbarFolder = imageToolbarPrefs.getComplexValue("imageFolder", nsILocalFile); var savefile = imageToolbarFolder; if (!savefile.exists()) { var bundle = document.getElementById("imageToolbarStrings"); var nofolder = bundle.getString("nofolder"); alert(nofolder); var success = imageToolbarSelectFolder(); if (success == false) return; } savefile.appendRelativePath(filename); var overwrite = imageToolbarPrefs.getBoolPref("overwrite"); //if (imageToolbarButtonAction(e,imageToolbarArray[0]) == false) { var qqq = false; if (qqq == false) { if (!imageToolbarSaveDelay) { imageToolbarSaveDelay = true; if (savefile.exists() && overwrite == false) savefile.createUnique(0, 0777); try { // Support for Download Sort if (ds_getTargetFile) { saveURL(url, null, null, false, true); window.setTimeout("imageToolbarSaveDelay = false",250); return; } } catch (e) {} // If Download Sort is not enabled, use default method saveURL(url, savefile, null, false, true); window.setTimeout("imageToolbarSaveDelay = false",250); } } else { // Save prompt var ext = filename.substring(filename.lastIndexOf('.'),filename.length); /* Download Sort code duplicated to provide adequate support */ try { var foundExt = checkForExtension(ext); // Returns -1 if not found if (foundExt != -1) { var aSource = ds_RDF.GetResource("NC:ExtensionRoot:" + ext); var locRDF = ds_RDF.GetResource("http://home.netscape.com/NC-rdf#location"); var autoLocation = ds_datasource.GetTarget(aSource, locRDF, true); autoLocation = autoLocation.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; } } catch (e) {} if (autoLocation) { savefile.initWithPath(autoLocation); savefile.appendRelativePath(filename); } savePrompt(url, savefile, filename, autoLocation); } if (e.button==2) getBrowser().removeCurrentTab(); } |
Silver_Dick > 14-11-2005 13:22:07 |
А можно ли на одну из кнопок повесить действие "добавить картинку в письмо как приложение" ? Увидел что нибудь интересное, ткнул одну кнопку, дописал адрес и заслал другу. А то сначала сохранять их, а потом уже в письмо толкать - муторно. Есть в контекстном меню пункт "отправить изображение", но он ссылку вставляет, а не картинку. ВОт нужно точно такое, "но с перламутровыми пуговицами" То есть картинка вместо ссылки. |