>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]Location Bar+ http://forum.mozilla-russia.org/viewtopic.php?id=51852 |
bunda1 > 08-10-2011 23:44:58 |
Location Bar+ (Firefox 3.6 - 7.1) Выделить код Код:// удаление обработчиков для адресной строки, при открытии настройки панелей this.onDestroy = function() { document.getElementById("urlbar").removeEventListener("dblclick", mclick, false); document.getElementById("urlbar").removeEventListener("mousedown", function(e){if(!gURLBar.focused) goDoCommand("cmd_copy");}, false) }; // добавляем обработчики для адресной строки........ document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //копировать выделенный текст на странице document.getElementById("urlbar").addEventListener("mousedown", function(e){if(!gURLBar.focused) goDoCommand("cmd_copy");}, false); //функция которую запускает обработчики............. function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на двойной левый клик event.preventDefault(); event.stopPropagation(); //Вставить в адресную строку из буфера обмена var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gURLBar.value = readFromClipboard(); //функция - открыть адрес function msearch(event){ if (gBrowser.currentURI.spec != 'about:blank') { var tab = getBrowser().addTab(gURLBar.value, null, null); getBrowser().selectedTab = tab; } else {gBrowser.loadURI(gURLBar.value)} } //фылтр var strokaadresa= gURLBar.value; var nsa=strokaadresa.substring(0,5); if (nsa=="file:"){msearch(event);} else if (nsa=="http:"){msearch(event);} else if (nsa=="ftp:/"){msearch(event);} else //адрес типа "custombutton://%3C%3Fxm....." var CBstrokaadresa= gURLBar.value; var CBnsa=CBstrokaadresa.substring(0,15); if (CBnsa=="custombutton://"){msearch(event);} else { //поиск в текущем поисковике var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(readFromClipboard(), null); //если это пустая вкладка или ...... var enabled = [ "chrome://browser/content/bookmarks/bookmarksPanel.xul", "about:blank", ]; if (enabled.indexOf(content.location.href) != -1) { //открыть результаты поиска в текущей вкладке loadURI(submission.uri.spec, null, submission.postData, false); } //если это обычная вкладка. else { //открыть результаты поиска в новой вкладке gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, false, false); } } } }; |
bunda1 > 09-10-2011 12:57:55 |
Наведением курсора заменить текст адресной строки на текст из из буфера. Выделить код Код://наведением курсора заменить текст адресной строки на текст из из буфера document.getElementById("urlbar").addEventListener("mouseover", function(e) {gURLBar.value = readFromClipboard(); }, false); Наведением курсора выделить текст адресной строки. Выделить код Код://наведением курсора выделить текст адресной строки document.getElementById("urlbar").addEventListener("mouseover", function(e) { e.target.select(); }, false); |
Inko7 > 13-10-2011 17:42:12 |
bunda1 |
bunda1 > 13-10-2011 20:22:14 |
Inko7 пишет
Хорошая идея, но к сажелению так можно искать только в поисковике (если был текст)который стоит по умолчанию. Выделить код Код:// удаление обработчика для адресной строки, при открытии настройки панелей this.onDestroy = function() {document.getElementById("urlbar").removeEventListener("dblclick", mclick, false);}; // добавляем обработчик для адресной строки document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //функция которую запускает обработчик function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //Вставить в адресную строку var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); var text = content.getSelection().toString(); if(text){gURLBar.value = text;} else { gURLBar.value = readFromClipboard(); } //поиск/перейти gURLBar.handleCommand(event); } }; |
Inko7 > 13-10-2011 22:00:09 |
bunda1 пишет
Да, увидел разницу. Но думаю это не так важно. оффтоп измени пожалуйста и этот твой код на эмуляцию нажатия ENTER и открытие в новой активной вкладке. И добавь условие про выделенный текст на странице, как это сделано в коде с адресной строкой. Выделить код Код:// КОД ДЛЯ СТРОКИ ПОИСКА // удаление обработчика для строки поиска, при открытии настройки панелей this.onDestroy = function() {searchbox.removeEventListener("dblclick", msclick, false);}; // добавляем обработчик для строки поиска.......... var searchbar = document.getElementById("searchbar"); var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox"); searchbox.addEventListener("dblclick", msclick, false); //функция которую запускает обработчик function msclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //поиск msSearch(event); } }; //функция - поиск function msSearch(event){ var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); var str = readFromClipboard(); var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(str, null); getBrowser (). selectedTab = getBrowser (). addTab(submission.uri.spec, null, null, submission.postData, true, false); }; |
bunda1 > 14-10-2011 20:38:49 |
Inko7 пишет
Выделить код Код:// удаление обработчиков для строки поиска, при открытии настройки панелей this.onDestroy = function() { searchbox.removeEventListener("dblclick", mclick, false); searchbox.removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); }; // удаление обработчиков для адресной строки, при открытии настройки панелей this.onDestroy = function() { document.getElementById("urlbar").removeEventListener("dblclick", mclick, false); document.getElementById("urlbar").removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false) }; // добавляем обработчики для строки поиска.......... var searchbar = document.getElementById("searchbar"); var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox"); searchbox.addEventListener("dblclick", mclick, false); //наведением курсора на строку поиска копировать выделенный текст searchbox.addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); // добавляем обработчики для адресной строки........ document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //наведением курсора на адресную строку копировать выделенный текст document.getElementById("urlbar").addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); //функция которую запускает обработчики............. function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //если это не пустая вкладка или вкладка которая не загрузилась if (gBrowser.currentURI.spec != 'about:blank' || gBrowser.webProgress.isLoadingDocument) { //открыть пустую вкладку newTab = window.getBrowser().addTab(); window.getBrowser().selectedTab = newTab; } //Вставить-перейти для адресной строки gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand(); } }; У этого кода есть недостатки: |
bunda1 > 14-10-2011 21:21:03 |
Inko7 Выделить код Код:// удаление обработчиков для строки поиска, при открытии настройки панелей this.onDestroy = function() { searchbox.removeEventListener("dblclick", mclick, false); searchbox.removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); }; // удаление обработчиков для адресной строки, при открытии настройки панелей this.onDestroy = function() { document.getElementById("urlbar").removeEventListener("dblclick", mclick, false); document.getElementById("urlbar").removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false) }; // добавляем обработчики для строки поиска.......... var searchbar = document.getElementById("searchbar"); var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox"); searchbox.addEventListener("dblclick", mclick, false); //наведением курсора на строку поиска копировать выделенный текст searchbox.addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); // добавляем обработчики для адресной строки........ document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //наведением курсора на адресную строку копировать выделенный текст document.getElementById("urlbar").addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); //функция которую запускает обработчики............. function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //если это не пустая вкладка или вкладка которая не загрузилась if (gBrowser.currentURI.spec != 'about:blank' || gBrowser.webProgress.isLoadingDocument) { //открыть пустую вкладку newTab = window.getBrowser().addTab(); window.getBrowser().selectedTab = newTab; } //Вставить var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gURLBar.value = readFromClipboard(); //функция-перейти function msearch(event){gBrowser.loadURI(readFromClipboard());} //фылтр var strokaadresa= gURLBar.value; var nsa=strokaadresa.substring(0,5); if (nsa=="file:"){msearch(event);} else if (nsa=="http:"){msearch(event);} else if (nsa=="ftp:/"){msearch(event);} else { //поиск BrowserSearch.loadSearch(readFromClipboard(), false); } } }; У этого кода есть недостатки - копирует любой выделенный текст наведением курсора на строку поиска или на адресную строку. |
Inko7 > 15-10-2011 18:52:44 |
bunda1 пишет
Да, этот код вроде бы нормальный. Но стабильно работает только для строки адреса! А вот в строку поиска не всегда вставляется содержимое буфера. Если текущая страница пустая, то вставляет практически всегда. Но если страница не пустая (или грузится), то вставляет очень редко. В итоге открывается сайт поисковика, но без результатов... bunda1 пишет
избавился от этого удалением нужных строк кода |
bunda1 > 15-10-2011 22:27:48 |
Inko7 пишет
но тогда выделенный текст не будет искать Inko7 пишет
странно, у меня такой проблемы нет, может виновато какое нибудь раширенние или конфликт с другим CB кодом, попробуй этот код: Выделить код Код:// удаление обработчиков для строки поиска, при открытии настройки панелей this.onDestroy = function() { searchbox.removeEventListener("dblclick", mclick, false); searchbox.removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); }; // удаление обработчиков для адресной строки, при открытии настройки панелей this.onDestroy = function() { document.getElementById("urlbar").removeEventListener("dblclick", mclick, false); document.getElementById("urlbar").removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false) }; // добавляем обработчики для строки поиска.......... var searchbar = document.getElementById("searchbar"); var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox"); searchbox.addEventListener("dblclick", mclick, false); //наведением курсора на строку поиска копировать выделенный текст searchbox.addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); // добавляем обработчики для адресной строки........ document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //наведением курсора на адресную строку копировать выделенный текст document.getElementById("urlbar").addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); //функция которую запускает обработчики............. function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //Вставить var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gURLBar.value = readFromClipboard(); //функция-перейти function msearch(event){ if (gBrowser.currentURI.spec != 'about:blank') {gBrowser.selectedTab = gBrowser.loadOneTab(gURLBar.value)} else {gBrowser.loadURI(gURLBar.value)} } //фылтр var strokaadresa= gURLBar.value; var nsa=strokaadresa.substring(0,5); if (nsa=="file:"){msearch(event);} else if (nsa=="http:"){msearch(event);} else if (nsa=="ftp:/"){msearch(event);} else { //поиск BrowserSearch.loadSearch(gURLBar.value, false); } } }; |
Inko7 > 15-10-2011 23:52:24 |
bunda1 пишет
bunda1 пишет
вот в этом то вся проблема и остается! Inko7 пишет
вроде проблемы больше нет, но при клике на строке поиска результаты получаем в текущей вкладке |
bunda1 > 16-10-2011 00:38:06 |
Inko7 Inko7 пишет
вроде исправил: Выделить код Код:// удаление обработчиков для строки поиска, при открытии настройки панелей this.onDestroy = function() { searchbox.removeEventListener("dblclick", mclick, false); searchbox.removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); }; // удаление обработчиков для адресной строки, при открытии настройки панелей this.onDestroy = function() { document.getElementById("urlbar").removeEventListener("dblclick", mclick, false); document.getElementById("urlbar").removeEventListener("mouseover", function(e){if(!gURLBar.focused) goDoCommand("cmd_copy");}, false) }; // добавляем обработчики для строки поиска.......... var searchbar = document.getElementById("searchbar"); var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox"); searchbox.addEventListener("dblclick", mclick, false); //наведением курсора на строку поиска копировать выделенный текст searchbox.addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); // добавляем обработчики для адресной строки........ document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //наведением курсора на адресную строку копировать выделенный текст document.getElementById("urlbar").addEventListener("mouseover", function(e){if(!gURLBar.focused) goDoCommand("cmd_copy");}, false); //функция которую запускает обработчики............. function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //Вставить var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gURLBar.value = readFromClipboard(); //функция-перейти function msearch(event){ if (gBrowser.currentURI.spec != 'about:blank') { var tab = getBrowser().addTab(gURLBar.value, null, null); getBrowser().selectedTab = tab; } else {gBrowser.loadURI(gURLBar.value)} } //фылтр var strokaadresa= gURLBar.value; var nsa=strokaadresa.substring(0,5); if (nsa=="file:"){msearch(event);} else if (nsa=="http:"){msearch(event);} else if (nsa=="ftp:/"){msearch(event);} else { //поиск......................... var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.defaultEngine.getSubmission(readFromClipboard(), null); //открыть результаты поиска в новой вкладке if (gBrowser.currentURI.spec != 'about:blank' ) { gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, false, false); } //открыть результаты поиска в текущей вкладке else { loadURI(submission.uri.spec, null, submission.postData, false); } } } };
Выделить код Код://Клик средней кнопкой мыши на кнопке выбора поисковика, ищет выделенный текст на странице или при отсутствии выделения текст из буфера обмена в поисковике по умолчанию. (function() { var searchClipboard = function(event) { if (event.button != 1) return; // получить выделенный текст var text = content.getSelection().toString(); if(text) { var str = text; } // получить текст из буфера обмена else { var str = readFromClipboard(); } //......... var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.defaultEngine.getSubmission(str, null); //открыть результаты поиска в новой вкладке if (gBrowser.currentURI.spec != 'about:blank' ) { gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, false, false); } //открыть результаты поиска в текущей вкладке else { loadURI(submission.uri.spec, null, submission.postData, false); } }; var searchbar = document.getElementById("searchbar"); // добавляем обработчик для строки поиска.......... document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-engine-button") .addEventListener("click", searchClipboard, false); }()); |
Inko7 > 16-10-2011 10:37:36 |
bunda1 пишет
Отличненько!!! Никаких проблем со вставкой из буфера и вставкой выделенного на странице! Класс! |
bunda1 > 16-10-2011 14:00:48 |
Inko7 пишет
Не надо дабл-СКМ а надо дабл-ЛКМ, |
Inko7 > 16-10-2011 14:21:33 |
Inko7 пишет
блин, вот у меня руки кривые, опять ошибся bunda1 пишет
в твоем последнем варианте (пост №11) меня абсолютно все устроило, кроме поиска в поисковике по-умолчанию! |
bunda1 > 16-10-2011 14:54:30 |
Inko7 скрытый текст Выделить код Код:// удаление обработчиков для строки поиска, при открытии настройки панелей this.onDestroy = function() { searchbox.removeEventListener("dblclick", mclick, false); searchbox.removeEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); }; // удаление обработчиков для адресной строки, при открытии настройки панелей this.onDestroy = function() { document.getElementById("urlbar").removeEventListener("dblclick", mclick, false); document.getElementById("urlbar").removeEventListener("mouseover", function(e){if(!gURLBar.focused) goDoCommand("cmd_copy");}, false) }; // добавляем обработчики для строки поиска.......... var searchbar = document.getElementById("searchbar"); var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox"); searchbox.addEventListener("dblclick", mclick, false); //наведением курсора на строку поиска копировать выделенный текст searchbox.addEventListener("mouseover", function(e){goDoCommand("cmd_copy");}, false); // добавляем обработчики для адресной строки........ document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //наведением курсора на адресную строку копировать выделенный текст document.getElementById("urlbar").addEventListener("mouseover", function(e){if(!gURLBar.focused) goDoCommand("cmd_copy");}, false); //функция которую запускает обработчики............. function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //Вставить var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gURLBar.value = readFromClipboard(); //функция-перейти function msearch(event){ if (gBrowser.currentURI.spec != 'about:blank') { var tab = getBrowser().addTab(gURLBar.value, null, null); getBrowser().selectedTab = tab; } else {gBrowser.loadURI(gURLBar.value)} } //фылтр var strokaadresa= gURLBar.value; var nsa=strokaadresa.substring(0,5); if (nsa=="file:"){msearch(event);} else if (nsa=="http:"){msearch(event);} else if (nsa=="ftp:/"){msearch(event);} else { //поиск в текущем поисковике var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var submission = ss.currentEngine.getSubmission(readFromClipboard(), null); //если это не пустая вкладка if (gBrowser.currentURI.spec != 'about:blank' ) { //открыть результаты поиска в новой вкладке gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, false, false); } //если это пустая вкладка else { //открыть результаты поиска в текущей вкладке loadURI(submission.uri.spec, null, submission.postData, false); } } } }; |
Inko7 > 16-10-2011 16:06:07 |
bunda1 |
slbgz > 18-10-2011 23:21:40 |
bunda1 |
bunda1 > 19-10-2011 18:09:34 |
slbgz пишет
Эти коды адреса искать не будут. А у тебя есть идеи? |
bunda1 > 19-10-2011 19:17:30 |
Location Bar+ |
slbgz > 19-10-2011 20:28:19 |
bunda1 пишет
Нет... я намекал на то, что моя кнопка Go plus!³, в которой я использовал много твоего кода и кода других кнопкописателей плюс немножко присочинил сам, это все может и даже - еще больше, ей пофиг, что именно открывать и что именно и где именно искать... П.С. Есть идея! 19-10-2011 20:31:21 |
bunda1 > 19-10-2011 20:41:56 |
slbgz |
slbgz > 19-10-2011 23:47:55 |
минимализма в чем? что-то я перестаю эти слова понимать... минимум функций что-ли? или - минимум элементов на экране? |