Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№2613-11-2014 05:16:24

Александр Колесников
Участник
 
Группа: Members
Зарегистрирован: 30-12-2005
Сообщений: 171
UA: Firefox 31.0

Re: [CB]CB drag and go

bunda1 Если и сохранять картинки по даблклику, то с запросом... не могли бы поправить?

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)

Отсутствует

 

№2718-11-2014 00:43:43

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 36.0

Re: [CB]CB drag and go

bunda1
А нельзя ли сделать, чтобы текст сохранялся не в файл, а в заданный каталог ScrapBook? Пусть даже в виде текстовой заметки.

Отсутствует

 

№2827-02-2015 16:56:41

roadrunner
Участник
 
Группа: Members
Зарегистрирован: 18-08-2011
Сообщений: 34
UA: Firefox 35.0

Re: [CB]CB drag and go

подскажите,как подправить чтобы "R - сохранить ссылку, без запроса в папку загрузки" работало как - открыть ссылку во внешним проигрывателе?

Отсутствует

 

№2927-02-2015 21:24:35

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

roadrunner пишет

подскажите,как подправить чтобы "R - сохранить ссылку, без запроса в папку загрузки" работало как - открыть ссылку во внешним проигрывателе?

Замени:

Выделить код

Код:

saveImageURL( link, 0, 0, 0, 1, null, content.document );

на:

Выделить код

Код:

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)

Отсутствует

 

№3027-02-2015 22:19:41

roadrunner
Участник
 
Группа: Members
Зарегистрирован: 18-08-2011
Сообщений: 34
UA: Firefox 35.0

Re: [CB]CB drag and go

bunda1
спасибо,отлично работает

Отсутствует

 

№3107-03-2015 18:03:44

mahtanoronra
Участник
 
Группа: Members
Зарегистрирован: 08-03-2009
Сообщений: 63
UA: Firefox 31.0

Re: [CB]CB drag and go

а можно сделать что бы

Выделить код

Код:

if ( direction == "D") {
                      // поиск текста в google в новой фоновой странице
                      gBrowser.addTab("http://www.google.com/search?q=" + escape( convertFromUnicode("UTF-8", sel )) );
                      return;
                      }

искал текст в активном поисковике?

Отсутствует

 

№3207-03-2015 20:26:43

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 39.0

Re: [CB]CB drag and go

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;
                      }

Отсутствует

 

№3307-03-2015 22:27:45

mahtanoronra
Участник
 
Группа: Members
Зарегистрирован: 08-03-2009
Сообщений: 63
UA: Firefox 31.0

Re: [CB]CB drag and go

turbot
то что надо))
тогда и это измините пожалуйста

Выделить код

Код:

if ( direction == "U" ) {
                      // поиск текста в google в новой активной странице
                      gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + sel );                                          
                      return;
                      }

я один раз попробовал изменить движение текста влево, дак после этого клик средней кнопки мыши перестал рабоать в браузаре))))
по этому сам не лезу.....

Отсутствует

 

№3407-03-2015 22:44:15

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 39.0

Re: [CB]CB drag and go

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;
                      }

Отсутствует

 

№3529-05-2015 21:50:50

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 41.0

Re: [CB]CB drag and go

bunda1

Чувствуется забыл? :)

Отсутствует

 

№3629-05-2015 22:03:04

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

voqabuhe пишет

bunda1

Чувствуется забыл? :)

Нет я думал что ты забыл :)  А так попробую в эти воскресении дни.

Отсутствует

 

№3729-05-2015 23:21:39

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 41.0

Re: [CB]CB drag and go

bunda1 пишет

Нет я думал что ты забыл :)

Не надейся. У меня все ходы записаны! :)

bunda1 пишет

А так попробую в эти воскресении дни.

Спасибо!

Отсутствует

 

№3830-05-2015 01:36:04

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

voqabuhe пишет

:D Старый добрый фильм.

Попробуй:

Выделить код

Код:

// 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+_\-\.%=&amp;]*)?)?(#[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Л: Редактировать эту кнопку";

Отсутствует

 

№3930-05-2015 12:18:26

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 41.0

Re: [CB]CB drag and go

bunda1
Спасибо огромное! Со ссылками теперь просто отлично. А вот выделенный текст,  если его влево двинуть, тоже пытается открыть как ссылку. А логично было бы  сделать:
                                                        L - сохранить текст в .txt файл, с запросом
                                                        R - сохранить текст в .txt файл, без запроса в папку загрузки
Возможно, такое? Сделаешь?

Отредактировано voqabuhe (30-05-2015 12:20:59)

Отсутствует

 

№4030-05-2015 13:36:05

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

voqabuhe пишет

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+_\-\.%=&amp;]*)?)?(#[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Л: Редактировать эту кнопку";

Отсутствует

 

№4130-05-2015 15:22:54

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 41.0

Re: [CB]CB drag and go

bunda1 пишет

Да легко :)

Не надо легко, лучше сделай как надо. :) Теперь все ссылки, если двигать вверх или вниз сразу и открывает и в Гугле ищет.

Отсутствует

 

№4230-05-2015 15:46:10

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

voqabuhe пишет

Не надо легко, лучше сделай как надо. :) Теперь все ссылки, если двигать вверх или вниз сразу и открывает и в Гугле ищет.

Упс...

Выделить код

Код:

// 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+_\-\.%=&amp;]*)?)?(#[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)

Отсутствует

 

№4330-05-2015 17:17:13

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 41.0

Re: [CB]CB drag and go

bunda1
Ну на мой взгляд теперь просто всё идеально. Спасибо!!! thank_you2.gif

Отсутствует

 

№4425-08-2015 15:07:13

austri
Участник
 
Группа: Members
Зарегистрирован: 20-01-2009
Сообщений: 162
UA: Firefox 40.0

Re: [CB]CB drag and go

прошу подсказать, что мне нужно изменить в коде (от 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 (почти полностью вниз-влево + вниз-прямо + почти полностью вниз-вправо)

(налево/направо в коде не использую)

Отсутствует

 

№4526-08-2015 20:30:17

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

austri пишет

а нужно, чтобы стало:
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Л: Редактировать эту кнопку";

Отсутствует

 

№4627-08-2015 00:45:52

austri
Участник
 
Группа: Members
Зарегистрирован: 20-01-2009
Сообщений: 162
UA: Firefox 40.0

Re: [CB]CB drag and go

благодарю. сначала я просто заменил код на новый и мне показалось, что стало микроскопически лучше (около 315-45, 225-135)
но позже я убедился, что вообще ничего не улучшилось. затем я удалил кнопку и полностью заново её сделал

и теперь стало лучше чем было. хотя точно не 271-89, 269-91
даже примерно описать затрудняюсь - очень приблизительно стало что-то типа 290-70, 250-110

к сожалению, ещё до замены кода проявился новый глюк - при запуске браузера перетаскивание вообще не работает
но начинает, если зайти в customize и просто сразу выйти оттуда (там справа в синей зоне расположена кнопка "CB drag and go")

Отсутствует

 

№4727-08-2015 20:01:14

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

austri пишет

при запуске браузера перетаскивание вообще не работает
но начинает, если зайти в customize и просто сразу выйти оттуда (там справа в синей зоне расположена кнопка "CB drag and go")

Вынеси кнопку на любую панель браузера.

Отсутствует

 

№4809-12-2015 13:13:32

tom911
Участник
 
Группа: Members
Зарегистрирован: 20-05-2011
Сообщений: 174
UA: Firefox 42.0

Re: [CB]CB drag and go

Есть ли возможность самому указать каталог для сохранения изображений в коде инициализации кнопки? PS/ Выдает запрос при жесте вправо (без запроса на сохранение изображения). Почините please!

Отредактировано tom911 (09-12-2015 17:33:31)

Отсутствует

 

№4909-12-2015 22:47:42

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: [CB]CB drag and go

tom911 пишет

Есть ли возможность самому указать каталог для сохранения изображений в коде инициализации кнопки? PS/

Возможность есть, попробую сделать.

tom911 пишет

Выдает запрос при жесте вправо (без запроса на сохранение изображения). Почините please!

Что бы сохраняло без запроса в настройках Firefox нужно указать папку загрузки.

Отсутствует

 

№5010-12-2015 00:04:20

tom911
Участник
 
Группа: Members
Зарегистрирован: 20-05-2011
Сообщений: 174
UA: Firefox 42.0

Re: [CB]CB drag and go

bunda1 пишет

Заранее благодарен, в ожидании!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]