bunda1 Если и сохранять картинки по даблклику, то с запросом... не могли бы поправить?
некоторые ссылки оформлены как изображения, и как узнать с чем хочет работать пользователь
Если ссылка содержит изображение, то автором задуман переход на изображение или файл. Подразумеваемое действие - ЛКМ\СКМ - переход по ссылке в текущей\новой вкладке. Drag-n-drop же для изображения юзает только продвинутый юзер, наделивший браузер дополнительным функционалом. И он точно знает, что тащит картинку для того, чтобы cохранить\открыть\искать_похожее изображение.
То есть я предлагаю обрабатывать ссылки, имеющие изображение, как изображения.
P.S. Закомментировав все действия со ссылками, кроме "копировать ссылку в буфер обмена" (для остального мне удобнее кликать), я и получил то, что хотел - все картинки обрабатываются как картинки.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //CB drag and go( Firefox17+ ) //Версия: от 15.10.2014 //https://forum.mozilla-russia.org/viewtopic.php?pid=664249#p664249 //Автор: bunda1 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function dragAndGo(e) { // стоп, если внутренне страницы или страница с файлами var protocol = content.location.protocol; if ( ["about:", "chrome:", "jar:", "data:", "file:"].indexOf( protocol ) !== -1 ) return; switch ( e.type ) { case "dragstart": self.startPoint = {x:e.screenX, y:e.screenY}; break; // получить начальные координаты перетаскивания case "dragover": Cc["@mozilla.org/widget/dragservice;1"].getService(Ci.nsIDragService).getCurrentSession().canDrop = true; break; case "drop": { // стоп, если перетаскивается в поле текстового ввода или из-за пределов окна браузера var name = e.target.localName; if ( !self.startPoint || ["text", "input", "textarea", "password"].indexOf( name ) !== -1 ) return; e.preventDefault(); // получить направление перетаскивания, L налево, R направо, U верх, D вниз var [subX, subY] = [e.screenX - self.startPoint.x, e.screenY - self.startPoint.y]; var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))]; var direction = distX > distY ? (subX < 0 ? "L" : "R") : (subY < 0 ? "U" : "D"); self.startPoint = 0; // стоп, если перетаскивается меньше минимального расстояния if ( distX > distY ? distX < 12 : distY < 12 ) return; // Ссылки .... if ( e.dataTransfer.types.contains("text/x-moz-url") ) { var link = e.dataTransfer.getData("text/x-moz-url").split("\n")[0]; if ( direction == "U" ) { // сохранить ссылку //saveImageURL( link, "save", null, false, false, null, content.document); //return; } if ( direction == "D" ) { // открыть ссылку в новой фоновой странице //gBrowser.addTab( link ); //return; } if ( direction == "L" ) { // копировать ссылку в буфер обмена gClipboard.write( link ); } if ( direction == "R" ) { // открыть ссылку в новой активной странице //gBrowser.selectedTab = gBrowser.addTab( link ); //return; // сохранить ссылку или изображение без запроса на место сохранения в папке загрузки или на диск C: //saveImageURL( link, 0, 0, 0, 1, null, content.document ); //return; } } // Изображения .... if ( e.dataTransfer.types.contains("application/x-moz-file-promise-url") ) { var img = e.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0] if ( direction == "U" ) { // поиск похожих изображений на google.com в новой активной вкладке gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/searchbyimage?image_url=" + img ); return; } if ( direction == "D" ) { // сохранить изображение saveImageURL( img, "save", null, false, false, null, content.document); return; } if ( direction == "L" ) { // открыть изображение в новой фоновой странице gBrowser.addTab( img ); return; } if ( direction == "R" ) { // открыть изображение в новой активной странице gBrowser.selectedTab = gBrowser.addTab( img ); return; // сохранить изображение без запроса на место сохранения в папке загрузки или на диск C: //saveImageURL( img, 0, 0, 0, 1, null, content.document ); //return; } } // Выделенный текст .... if ( e.dataTransfer.getData("text/unicode") ) { var sel = e.dataTransfer.getData("text/unicode"); if ( direction == "U" ) { // поиск текста в google в новой активной странице gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + sel ); return; } if ( direction == "D") { // поиск текста на текущей странице, как по "CTRL F" gFindBar.onFindCommand( sel ); // поиск текста в google в новой фоновой странице //gBrowser.addTab("http://www.google.com/search?q=" + escape( convertFromUnicode("UTF-8", sel )) ); //return; } if ( direction == "L" ) { // копировать в буфер обмена gClipboard.write( sel ); } if ( direction == "R" ) { // открыть текстовые ссылки в новой активной странице gBrowser.selectedTab = gBrowser.addTab( sel ); return; // сохранить текст в .txt файл //var fileTitle = content.document.title.slice(0, 50) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); //saveURL("data:text/plain," + encodeURIComponent( content.location + ("\r\n\r\n" + sel )), // fileTitle + ".txt", null, false, false, null, content.document); } } } } }; ["dragstart", "dragover", "drop"].forEach(function(type) addEventListener(type, dragAndGo, false, gBrowser) ); // Подсказка кнопки ............................................................................ this.tooltipText = "CB drag and go \nЗапускает жести мыши для ЛКМ на странице \nЛ: Редактировать эту кнопку";
Отредактировано Александр Колесников (13-11-2014 06:00:35)
Отсутствует
подскажите,как подправить чтобы "R - сохранить ссылку, без запроса в папку загрузки" работало как - открыть ссылку во внешним проигрывателе?
Отсутствует
подскажите,как подправить чтобы "R - сохранить ссылку, без запроса в папку загрузки" работало как - открыть ссылку во внешним проигрывателе?
Замени:
на:
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); file.initWithPath("C:\\Program Files\\KMPlayer\\kmplayer.exe"); process.init(file); process.run(false, [link], 1);
вместо C:\\Program Files\\KMPlayer\\kmplayer.exe укажи свой путь к проигрывателю.
Отредактировано bunda1 (27-02-2015 21:25:25)
Отсутствует
bunda1
спасибо,отлично работает
Отсутствует
а можно сделать что бы
if ( direction == "D") { // поиск текста в google в новой фоновой странице gBrowser.addTab("http://www.google.com/search?q=" + escape( convertFromUnicode("UTF-8", sel )) ); return; }
искал текст в активном поисковике?
Отсутствует
mahtanoronra
if ( direction == "D") { // поиск текста в текушем поисковике в фоновой вкладке var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(sel); gBrowser.addTab(submission.uri.spec, null, null, submission.postData); return; }
Отсутствует
turbot
то что надо))
тогда и это измините пожалуйста
if ( direction == "U" ) { // поиск текста в google в новой активной странице gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + sel ); return; }
я один раз попробовал изменить движение текста влево, дак после этого клик средней кнопки мыши перестал рабоать в браузаре))))
по этому сам не лезу.....
Отсутствует
mahtanoronra
// Выделенный текст .... if ( e.dataTransfer.getData("text/unicode") ) { var sel = e.dataTransfer.getData("text/unicode"); var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(sel); if ( direction == "U" ) { // поиск текста в текущем поисковике в новой активной странице gBrowser.selectedTab = gBrowser.addTab(submission.uri.spec, null, null, submission.postData); return; } if ( direction == "D") { // поиск текста в текущем поисковике в новой фоновой странице gBrowser.addTab(submission.uri.spec, null, null, submission.postData); return; }
Отсутствует
Отсутствует
Нет я думал что ты забыл А так попробую в эти воскресении дни.
Отсутствует
Нет я думал что ты забыл
Не надейся. У меня все ходы записаны!
А так попробую в эти воскресении дни.
Спасибо!
Отсутствует
Не надейся. У меня все ходы записаны!
Старый добрый фильм.
Попробуй:
// CB drag and go, от 30.05.2015. ................................ function dragAndGo(e) { // стоп, если внутренне страницы или страница с файлами var protocol = content.location.protocol; if ( ["about:", "chrome:", "jar:", "data:", "file:"].indexOf( protocol ) !== -1 ) return; switch ( e.type ) { case "dragstart": self.startPoint = {x:e.screenX, y:e.screenY}; break; // получить начальные координаты перетаскивания case "dragover": Cc["@mozilla.org/widget/dragservice;1"].getService(Ci.nsIDragService).getCurrentSession().canDrop = true; break; case "drop": { // стоп, если перетаскивается в поле текстового ввода или из-за пределов окна браузера var name = e.target.localName; if ( !self.startPoint || ["text", "input", "textarea", "password"].indexOf( name ) !== -1 ) return; e.preventDefault(); // получить направление перетаскивания, L налево, R направо, U верх, D вниз и сбросить startPoint var [subX, subY] = [e.screenX - self.startPoint.x, e.screenY - self.startPoint.y]; var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))]; var direction = distX > distY ? (subX < 0 ? "L" : "R") : (subY < 0 ? "U" : "D"); self.startPoint = 0; // стоп, если перетаскивается меньше минимального расстояния if ( distX > distY ? distX < 16 : distY < 16 ) return; // получить перетаскиваемый текст или адрес ссылки или изображения var text = e.dataTransfer.getData("text/unicode"); var img = e.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]; var textLink = /^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$|^custombutton:\/\/\S+$/.test(e.dataTransfer.getData("text/unicode")); var link = e.dataTransfer.getData("text/x-moz-url").split("\n")[0]; var link = textLink ? text : link; // Ссылки .... if ( link ) { if ( direction == "U" ) { // открыть ссылку в новой активной странице gBrowser.selectedTab = gBrowser.addTab( link ); return; } if ( direction == "D" ) { // открыть ссылку в новой фоновой странице gBrowser.addTab( link ); return; } if ( direction == "L" ) { // сохранить ссылку saveImageURL( link, "save", null, false, false, null, content.document); return; } if ( direction == "R" ) { // сохранить ссылку или изображение без запроса на место сохранения в папке загрузки или на диск C: saveImageURL( link, 0, 0, 0, 1, null, content.document ); return; } } // Изображения .... if ( img ) { if ( direction == "U" ) { // открыть изображение в новой активной странице gBrowser.selectedTab = gBrowser.addTab( img ); return; } if ( direction == "D" ) { // открыть изображение в новой фоновой странице gBrowser.addTab( img ); return; } if ( direction == "L" ) { // сохранить изображение saveImageURL( img, "save", null, false, false, null, content.document); return; } if ( direction == "R" ) { // сохранить изображение без запроса на место сохранения в папке загрузки или на диск C: saveImageURL( img, 0, 0, 0, 1, null, content.document ); return; } } // Выделенный текст .... if ( text ) { if ( direction == "U" ) { // поиск текста в google в новой активной странице gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + text ); return; } if ( direction == "D") { // поиск текста в google в новой фоновой странице gBrowser.addTab("http://www.google.com/search?q=" + escape( convertFromUnicode("UTF-8", text )) ); return; } if ( direction == "L" ) { // открыть текстовые ссылки gBrowser.selectedTab = gBrowser.addTab( text ); return; } if ( direction == "R" ) { // сохранить текст в .txt файл var fileTitle = content.document.title.slice(0, 50) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent( content.location + ("\r\n\r\n" + text )), fileTitle + ".txt", null, false, false, null, content.document); } } } } }; ["dragstart", "dragover", "drop"].forEach(function(type) addEventListener(type, dragAndGo, false, gBrowser) ); // Подсказка кнопки ............................................................................ this.tooltipText = "CB drag and go \nЗапускает жести мыши для ЛКМ на странице \nЛ: Редактировать эту кнопку";
Отсутствует
bunda1
Спасибо огромное! Со ссылками теперь просто отлично. А вот выделенный текст, если его влево двинуть, тоже пытается открыть как ссылку. А логично было бы сделать:
L - сохранить текст в .txt файл, с запросом
R - сохранить текст в .txt файл, без запроса в папку загрузки
Возможно, такое? Сделаешь?
Отредактировано voqabuhe (30-05-2015 12:20:59)
Отсутствует
bunda1
Спасибо огромное! Со ссылками теперь просто отлично. А вот выделенный текст, если его влево двинуть, тоже пытается открыть как ссылку. А логично было бы сделать:
L - сохранить текст в .txt файл, с запросом
R - сохранить текст в .txt файл, без запроса в папку загрузки
Возможно, такое? Сделаешь?
Да легко
// CB drag and go, от 30.05.2015. ................................ function dragAndGo(e) { // стоп, если не страница с http(s) адресом if ( !content.location.protocol.startsWith("http") ) return; switch ( e.type ) { case "dragstart": self.startPoint = {x:e.screenX, y:e.screenY}; break; // получить начальные координаты перетаскивания case "dragover": Cc["@mozilla.org/widget/dragservice;1"].getService(Ci.nsIDragService).getCurrentSession().canDrop = true; break; case "drop": { // стоп, если перетаскивается в поле текстового ввода или из-за пределов окна браузера var name = e.target.localName; if ( !self.startPoint || ["text", "input", "textarea", "password"].indexOf( name ) !== -1 ) return; e.preventDefault(); // получить направление перетаскивания, L налево, R направо, U верх, D вниз и сбросить startPoint var [subX, subY] = [e.screenX - self.startPoint.x, e.screenY - self.startPoint.y]; var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))]; var direction = distX > distY ? (subX < 0 ? "L" : "R") : (subY < 0 ? "U" : "D"); self.startPoint = 0; // стоп, если перетаскивается меньше минимального расстояния if ( distX > distY ? distX < 16 : distY < 16 ) return; // получить перетаскиваемый текст или адрес ссылки или изображения var text = e.dataTransfer.getData("text/unicode"); var img = e.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]; var textLink = /^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$|^custombutton:\/\/\S+$/.test(e.dataTransfer.getData("text/unicode")); var link = e.dataTransfer.getData("text/x-moz-url").split("\n")[0]; var link = textLink ? text : link; // Ссылки .... if ( link ) { if ( direction == "U" ) { // открыть ссылку в новой активной странице gBrowser.selectedTab = gBrowser.addTab( link ); } if ( direction == "D" ) { // открыть ссылку в новой фоновой странице gBrowser.addTab( link ); } if ( direction == "L" ) { // сохранить ссылку saveImageURL( link, "save", null, false, false, null, content.document); } if ( direction == "R" ) { // сохранить ссылку или изображение без запроса на место сохранения в папке загрузки или на диск C: saveImageURL( link, 0, 0, 0, 1, null, content.document ); } } // Изображения .... if ( img ) { if ( direction == "U" ) { // открыть изображение в новой активной странице gBrowser.selectedTab = gBrowser.addTab( img ); } if ( direction == "D" ) { // открыть изображение в новой фоновой странице gBrowser.addTab( img ); } if ( direction == "L" ) { // сохранить изображение saveImageURL( img, "save", null, false, false, null, content.document); } if ( direction == "R" ) { // сохранить изображение без запроса на место сохранения в папке загрузки или на диск C: saveImageURL( img, 0, 0, 0, 1, null, content.document ); } } // Выделенный текст .... if ( text ) { if ( direction == "U" ) { // поиск текста в google в новой активной странице gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + text ); } if ( direction == "D") { // поиск текста в google в новой фоновой странице gBrowser.addTab("http://www.google.com/search?q=" + escape(convertFromUnicode("UTF-8", text)) ); } if ( direction == "L" ) { // сохранить текст в .txt файл var fileTitle = content.document.title.slice(0, 50) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent(content.location + ("\r\n\r\n" + text )), fileTitle + ".txt", null, false, false, null, content.document); } if ( direction == "R" ) { // сохранить текст в .txt файл без запроса на место сохранения в папке загрузки var fileTitle = content.document.title.slice(0, 50) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent(content.location + ("\r\n\r\n" + text )), fileTitle + ".txt", null, false, true, null, content.document); } } } } }; ["dragstart", "dragover", "drop"].forEach(function(type) addEventListener(type, dragAndGo, false, gBrowser) ); // Подсказка кнопки ............................................................................ this.tooltipText = "CB drag and go \nЗапускает жести мыши для ЛКМ на странице \nЛ: Редактировать эту кнопку";
Отсутствует
Не надо легко, лучше сделай как надо. Теперь все ссылки, если двигать вверх или вниз сразу и открывает и в Гугле ищет.
Упс...
// CB drag and go, от 30.05.2015. ................................ function dragAndGo(e) { // стоп, если не страница с http(s) адресом if ( !content.location.protocol.startsWith("http") ) return; switch ( e.type ) { case "dragstart": self.startPoint = {x:e.screenX, y:e.screenY}; break; // получить начальные координаты перетаскивания case "dragover": Cc["@mozilla.org/widget/dragservice;1"].getService(Ci.nsIDragService).getCurrentSession().canDrop = true; break; case "drop": { // стоп, если перетаскивается в поле текстового ввода или из-за пределов окна браузера if ( !self.startPoint || e.target instanceof Ci.nsIDOMNSEditableElement ) return; e.preventDefault(); // получить направление перетаскивания, L налево, R направо, U верх, D вниз и сбросить startPoint var [subX, subY] = [e.screenX - self.startPoint.x, e.screenY - self.startPoint.y]; var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))]; var direction = distX > distY ? (subX < 0 ? "L" : "R") : (subY < 0 ? "U" : "D"); self.startPoint = 0; // стоп, если перетаскивается меньше минимального расстояния if ( distX > distY ? distX < 16 : distY < 16 ) return; // получить перетаскиваемый текст или адрес ссылки или изображения var text = e.dataTransfer.getData("text/unicode"); var img = e.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]; var textLink = /^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$|^custombutton:\/\/\S+$/.test(e.dataTransfer.getData("text/unicode")); var link = e.dataTransfer.getData("text/x-moz-url").split("\n")[0]; var link = textLink ? text : link; // Ссылки .... if ( link ) { if ( direction == "U" ) { // открыть ссылку в новой активной странице gBrowser.selectedTab = gBrowser.addTab( link ); } if ( direction == "D" ) { // открыть ссылку в новой фоновой странице gBrowser.addTab( link ); } if ( direction == "L" ) { // сохранить ссылку saveImageURL( link, "save", null, false, false, null, content.document); } if ( direction == "R" ) { // сохранить ссылку или изображение без запроса на место сохранения в папке загрузки или на диск C: saveImageURL( link, 0, 0, 0, 1, null, content.document ); } return; } // Изображения .... if ( img ) { if ( direction == "U" ) { // открыть изображение в новой активной странице gBrowser.selectedTab = gBrowser.addTab( img ); } if ( direction == "D" ) { // открыть изображение в новой фоновой странице gBrowser.addTab( img ); } if ( direction == "L" ) { // сохранить изображение saveImageURL( img, "save", null, false, false, null, content.document); } if ( direction == "R" ) { // сохранить изображение без запроса на место сохранения в папке загрузки или на диск C: saveImageURL( img, 0, 0, 0, 1, null, content.document ); } return; } // Выделенный текст .... if ( text ) { if ( direction == "U" ) { // поиск текста в google в новой активной странице gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + text ); } if ( direction == "D") { // поиск текста в google в новой фоновой странице gBrowser.addTab("http://www.google.com/search?q=" + escape(convertFromUnicode("UTF-8", text)) ); } if ( direction == "L" ) { // сохранить текст в .txt файл var fileTitle = content.document.title.slice(0, 50) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent(content.location + ("\r\n\r\n" + text )), fileTitle + ".txt", null, false, false, null, content.document); } if ( direction == "R" ) { // сохранить текст в .txt файл без запроса на место сохранения в папке загрузки var fileTitle = content.document.title.slice(0, 50) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent(content.location + ("\r\n\r\n" + text )), fileTitle + ".txt", null, false, true, null, content.document); } return; } } } }; ["dragstart", "dragover", "drop"].forEach(function(type) addEventListener(type, dragAndGo, false, gBrowser) ); // Подсказка кнопки ............................................................................ this.tooltipText = "CB drag and go \nЗапускает жести мыши для ЛКМ на странице \nЛ: Редактировать эту кнопку";
Отредактировано bunda1 (30-05-2015 16:19:12)
Отсутствует
прошу подсказать, что мне нужно изменить в коде (от 2015-05-30) (возможно, в разделе "получить направление перетаскивания"), чтобы стало так же удобно как раньше при использовании расширения easy drag to go
попытаюсь объяснить. допустим: up=0, right=90, down=180, left=270
сейчас:
1) открыть "ссылку/изображение/поиск текста в google" в новой активной странице: активируется при перетаскивании в зону примерно 320-40 (немного верх-влево + верх-прямо + немного верх-вправо)
2) открыть "ссылку/изображение/поиск текста в google" в новой фоновой странице: активируется при перетаскивании в зону примерно 220-140 (немного вниз-влево + вниз-прямо + немного вниз-вправо)
а нужно, чтобы стало:
1) открыть "ссылку/изображение/поиск текста в google" в новой активной странице: активируется при перетаскивании в зону примерно 271-89 (почти полностью верх-влево + верх-прямо + почти полностью верх-вправо)
2) открыть "ссылку/изображение/поиск текста в google" в новой фоновой странице: активируется при перетаскивании в зону примерно 269-91 (почти полностью вниз-влево + вниз-прямо + почти полностью вниз-вправо)
(налево/направо в коде не использую)
Отсутствует
а нужно, чтобы стало:
1) открыть "ссылку/изображение/поиск текста в google" в новой активной странице: активируется при перетаскивании в зону примерно 271-89 (почти полностью верх-влево + верх-прямо + почти полностью верх-вправо)
2) открыть "ссылку/изображение/поиск текста в google" в новой фоновой странице: активируется при перетаскивании в зону примерно 269-91 (почти полностью вниз-влево + вниз-прямо + почти полностью вниз-вправо)
// CB drag and go, от 26.08.2015. ................................ function dragAndGo(e) { // стоп, если внутренне страницы или страница с файлами var protocol = content.location.protocol; if ( ["about:", "chrome:", "jar:", "data:", "file:"].indexOf( protocol ) !== -1 ) return; switch ( e.type ) { case "dragstart": self.startPoint = {x:e.screenX, y:e.screenY}; break; // получить начальные координаты перетаскивания case "dragover": Cc["@mozilla.org/widget/dragservice;1"].getService(Ci.nsIDragService).getCurrentSession().canDrop = true; break; case "drop": { // стоп, если перетаскивается в поле текстового ввода или из-за пределов окна браузера var name = e.target.localName; if ( !self.startPoint || ["text", "input", "textarea", "password"].indexOf( name ) !== -1 ) return; e.preventDefault(); // получить направление перетаскивания, L налево, R направо, U верх, D вниз var Y = e.screenY - self.startPoint.y; var direction = Y < 0 ? "U" : "D"; self.startPoint = 0; // стоп, если перетаскивается меньше минимального расстояния if ((direction == "U" && Y > (-12)) || (direction == "D" && Y < 12)) return; // Ссылки .... if ( e.dataTransfer.types.contains("text/x-moz-url") ) { var link = e.dataTransfer.getData("text/x-moz-url").split("\n")[0]; if ( direction == "U" ) { // открыть ссылку в новой активной странице gBrowser.selectedTab = gBrowser.addTab( link ); return; } if ( direction == "D" ) { // открыть ссылку в новой фоновой странице gBrowser.addTab( link ); return; } } // Изображения .... if ( e.dataTransfer.types.contains("application/x-moz-file-promise-url") ) { var img = e.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0] if ( direction == "U" ) { // открыть изображение в новой активной странице gBrowser.selectedTab = gBrowser.addTab( img ); return; } if ( direction == "D" ) { // открыть изображение в новой фоновой странице gBrowser.addTab( img ); return; } } // Выделенный текст .... if ( e.dataTransfer.getData("text/unicode") ) { var sel = e.dataTransfer.getData("text/unicode"); if ( direction == "U" ) { // поиск текста в google в новой активной странице gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + sel ); return; } if ( direction == "D") { // поиск текста в google в новой фоновой странице gBrowser.addTab("http://www.google.com/search?q=" + escape( convertFromUnicode("UTF-8", sel )) ); return; } } } } }; ["dragstart", "dragover", "drop"].forEach(function(type) addEventListener(type, dragAndGo, false, gBrowser) ); // Подсказка кнопки ............................................................................ this.tooltipText = "CB drag and go \nЗапускает жести мыши для ЛКМ на странице \nЛ: Редактировать эту кнопку";
Отсутствует
благодарю. сначала я просто заменил код на новый и мне показалось, что стало микроскопически лучше (около 315-45, 225-135)
но позже я убедился, что вообще ничего не улучшилось. затем я удалил кнопку и полностью заново её сделал
и теперь стало лучше чем было. хотя точно не 271-89, 269-91
даже примерно описать затрудняюсь - очень приблизительно стало что-то типа 290-70, 250-110
к сожалению, ещё до замены кода проявился новый глюк - при запуске браузера перетаскивание вообще не работает
но начинает, если зайти в customize и просто сразу выйти оттуда (там справа в синей зоне расположена кнопка "CB drag and go")
Отсутствует
при запуске браузера перетаскивание вообще не работает
но начинает, если зайти в customize и просто сразу выйти оттуда (там справа в синей зоне расположена кнопка "CB drag and go")
Вынеси кнопку на любую панель браузера.
Отсутствует
Есть ли возможность самому указать каталог для сохранения изображений в коде инициализации кнопки? PS/ Выдает запрос при жесте вправо (без запроса на сохранение изображения). Почините please!
Отредактировано tom911 (09-12-2015 17:33:31)
Отсутствует
Есть ли возможность самому указать каталог для сохранения изображений в коде инициализации кнопки? PS/
Возможность есть, попробую сделать.
Выдает запрос при жесте вправо (без запроса на сохранение изображения). Почините please!
Что бы сохраняло без запроса в настройках Firefox нужно указать папку загрузки.
Отсутствует