Страницы: 1
Уважаемые гуру!
Хочу немного изменить сабж для себя: вместо действия по 2 кнопке "копировать картинку" поставить ("автосохранение" и сразу после этого автоматическое закрытие текущей вкладки). Покопался в скриптах, но чую, что разбираться в этом буду долго и нелегко. Если найдется добрая душа, которая разъяснит какой функцией это сделать или (я не сильно наглею?) выложит откорректированный аки следует xpi с последней сборкой сабжа, будет ему мой (и наверняка не только мой) бесконечный респект и пиво при возможности...
З.Ы. Надеюсь, такая модернизация не затронет копирайт :о)
Отсутствует
Image Toolbar 0.5
Если я правильно понял вопрос, то в файле imagetoolbarOverlay.js надо найти функцию imageToolbarCopyImage и заменить её тело на следующую пару строчек:
Проверял на 1.0.6 с TBE 1.14.2005071301, а также без TBE.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Замена тела функции на код
imageToolbarSaveImage(e);
getBrowser().removeTab(getBrowser().mContextTab);
не помогла, сработало это:
Спасибо за подсказку!!!
И еще, подскажите плиз или дайте ссылку где можно почитать в эл. варианте по командам JS, в частности getBrowser(), а то совсем в этом не шарю, а JBuilder из-за такой ерунды ставить как-то неохота.
Гран, как говорится, мерси!!!
Отсутствует
Вот так всегда... Еще идея появилась:
при клике правой кнопкой по кнопке "копировать картинку" на картинке-ссылке загрузить не саму картинку а файл по ссылке. Проблема выцепить урл ссылки. В самом ImageToolbar я такой функции не нашел. М.б. можно как-то не особо болезненно узнать адрес ссылки и подставить его в функцию?
Отсутствует
...где можно почитать в эл. варианте по командам JS, в частности getBrowser()...
Вот так всегда... Еще идея появилась:
при клике правой кнопкой по кнопке "копировать картинку" на картинке-ссылке загрузить не саму картинку а файл по ссылке...
%|
Не пойму, а чем левая кнопка не устраивает ? О чем речь вообще ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Не пойму, а чем левая кнопка не устраивает ? О чем речь вообще ?
Все для ускорения серфинга: при клике по
- первой иконке
- левой кнопкой - сохранить картинку
- правой - то же самое и закрыть вкладку
- второй иконке (для картинок - превью или картинок - ссылок на файл)
- л.к. - сохранить файл, на который ссылается картинка
- п.к. - то же самое и закрыть вкладку
На мой взгляд не лишние функции. Экономится время. Привязываюсь ко 2 иконке, т.к. дефолтные функции не особо нужны, и проще их заменить, чем добавлять новую иконку. Как я понимаю, ImageToolbar, если картинка не найдена в кэше, загружает ее самостоятельно. Если так, то для реализации нужно лишь подставить урл не самой картинки а ссылки.
Anton, спасибо за помощь, надеюсь вы поможете "замутить" и это.
Заранее спасибо!
Отсутствует
Anton, надеюсь вы поможете "замутить" и это.
Значит так. Я не ахти какой программист (в т. ч. и на JS); кроме того, у моей лени день рождения был вчера, а у меня - сегодня, так что ограничусь кое-какими соображениями, не проверяя их на практике.
Итак:
при клике по
- первой иконке
- левой кнопкой - сохранить картинку
- правой - то же самое и закрыть вкладку
в конец функции imageToolbarSaveImage добавляем
- второй иконке (для картинок - превью или картинок - ссылок на файл)
- л.к. - сохранить файл, на который ссылается картинка
- п.к. - то же самое и закрыть вкладку
здесь надо получить доступ к объемлющей картинку ссылке ?
заменяем тело функции imageToolbarCopyImage кодом imageToolbarSaveImage; затем, мне кажется, вот эту:
строчку функции imageToolbarCopyImage надо будет заменить как-то так:
var url = imageToolbarCurrentImage.parentNode.href; // или ...parentNode.getAttribute('href'); ??
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton, огромное вам спасибо!!! Все получилось.
Если кому-то это интересно, вот код (немного некорректно, но работает), которым нужно заменить соответствующие функции в imagetoolbarOverlay.js:
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(); }
Отсутствует
А можно ли на одну из кнопок повесить действие "добавить картинку в письмо как приложение" ? Увидел что нибудь интересное, ткнул одну кнопку, дописал адрес и заслал другу. А то сначала сохранять их, а потом уже в письмо толкать - муторно. Есть в контекстном меню пункт "отправить изображение", но он ссылку вставляет, а не картинку. ВОт нужно точно такое, "но с перламутровыми пуговицами" То есть картинка вместо ссылки.
Отсутствует
Страницы: 1