Страницы: 1
Хоть это и не совсем (а совсем не ) разработка... (Хотя... )
Известно, что, помимо прямого назначения, из закладок можно еще и скрипты запускать.
Короче говоря, мне интересно, кто чего полезного добился на этом поприще
А вот, что удалось мне.
BBCode
Если есть выделение на странице, происходит быстрая вставка выделенного текста с тэгами в последнюю <textarea> и переход к этой <textarea>.
Если выделения на страницы нет, берется выделенный текст из последней <textarea> и обрамляется тэгами (результат выделяется).
var to = '[quote]'; var tc = '[/quote] '; var tas = window.document.getElementsByTagName('textarea'); var tal = tas.length; if(tal == 0) alert('Textarea not found!'); else { var ta = tas[tal - 1]; var sel = window.getSelection(); if(sel != '') { ta.value += to + sel + tc + '\n'; ta.scrollTop = ta.scrollHeight; } else { var startPos = ta.selectionStart; var endPos = ta.selectionEnd; var oPosition = ta.scrollTop; var oHeight = ta.scrollHeight; var subst = to + ta.value.substring(startPos, endPos) + tc; ta.value = ta.value.substring(0, startPos) + subst + ta.value.substring(endPos, ta.value.length); ta.selectionStart = startPos; ta.selectionEnd = startPos + subst.length; var nHeight = ta.scrollHeight - oHeight; ta.scrollTop = oPosition + nHeight; } ta.focus(); }
Хм, глюк какой-то... Должно быть
var to = '[quоte]';
var tc = '[/quоte]';
вот только никак не исправить (сейчас буквы «о» – русские)...
Код для закладки (должна быть только одна строка):
javascript:var to='[quote]';var tc='[/quote] ';var tas=window.document.getElementsByTagName('textarea');var tal=tas.length;if(tal==0)alert('Textarea not found!');else{var ta=tas[tal-1];var sel=window.getSelection();if(sel!=''){ta.value += to+sel+tc+'\n';ta.scrollTop=ta.scrollHeight;}else{var startPos=ta.selectionStart;var endPos=ta.selectionEnd;var oPosition=ta.scrollTop;var oHeight=ta.scrollHeight;var subst=to+ta.value.substring(startPos,endPos)+tc;ta.value=ta.value.substring(0,startPos)+subst+ta.value.substring(endPos,ta.value.length);ta.selectionStart=startPos;ta.selectionEnd=startPos+subst.length;var nHeight=ta.scrollHeight-oHeight;ta.scrollTop=oPosition+nHeight;}ta.focus();}
И, разумеется, можно задать любые to и tc
var to='[В]';var tc='[/В]';
И можно ли вообще воспользоваться чем-то вроде document.commandDispatcher.focusedElement (как можно сделать из chrome://)?
Изменение размера окна (увы, не работает при запрете для JavaScript соответствующего действия)
1. Окно «сгоняется» вниз.
javascript:y=0.61;Y=screen.height;window.resizeTo(screen.width,Math.round(Y*y));window.screenX=0;window.screenY=Math.round(Y*(1-y));
y=0.61 – доля экрана, которая будет занята окном.
2. Просто ресайз до x*y.
javascript:x=800;y=600;X=screen.width;Y=screen.height;if(X<=x)x=X;if(Y<=y)y=Y;window.resizeTo(x,y);window.screenX=0;window.screenY=Y-y;
Но есть существенный недостаток: текущая вкладка будет замещена результатами выполнения скрипта... Если только не загрузить закладку в боковую панель (неудобно – даже с AiOS и самозакрытием сайдбара) или добавить что-то вроде window.select(); (что вернет ошибку в консоль, но сохранит содержимое вкладки, но это как-то «некультурно»).
Так вот, как в общем случае сохранить содержимое вкладки?
Исходный код в текущей вкладке:
P. S. Никто никогда не пытался сделать закладку для перехода к следующей ссылке (...01.jpg -> ...02.jpg)? А то у меня в свое время ничего полезного не вышло... С механизмом все просто:
var cl = location.href; ... /* из cl получаем новую ссылку nl */ ... location.href = nl;
А вот реализация у меня не пошла.
Отредактировано Infocatcher (26-07-2007 20:23:32)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
как в общем случае сохранить содержимое вкладки?
последнее выражение передавать в void, например для ресайза:
javascript:x=800;y=600;X=screen.width;Y=screen.height;if(X<=x)x=X;if(Y<=y)y=Y;window.resizeTo(x,y);window.screenX=0;void(window.screenY=Y-y);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
последнее выражение передавать в void
О, так гораздо лучше. Спасибо!
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
сделать закладку для перехода к следующей ссылке (...01.jpg -> ...02.jpg)?
Некоторые наработки:
var cl = location.href; var exti = cl.lastIndexOf('.'); var ext = cl.substring(exti, cl.length); if(ext.match(/^\.[a-z0-9]+$/i)) { var fni = cl.lastIndexOf('/') + 1; var fn = cl.substring(fni, exti); var fnst = fn.replace(/\d+$/, ''); var cn = fn.substring(fnst.length, fn.length); var z = n.replace(/^0*/, '').length; var n = ; /* получить из строки cn число */ var nn = n + 1; var add = n.toString().length < nn.toString().length /* 9 -> 10 */ ? "" : "0"; for(var i = 1; i <= z; i++) add += "0"; var nl = cl.substring(0, fni) + fnst + add + nn + ext; alert(nl); /* location.href=nl; */ } else alert('Invalid extension:\n' + ext);
Вопрос. Как преобразовать строку в число (var s = "01" -> var n = 1)?
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Q: Как преобразовать строку в число (в моей форме пользователь
вводит числовое значение в одно из текстовых полей, но ведь это
строка, а мне в цикле нужно число)?
A: Метод parseInt:
var stringInt="25";
parseInt(stringInt) - получившееся число, то есть 25.
Благодарю алфавит за любезно предоставленные буквы.
Отсутствует
Infocatcher
Самый простой и универсальный способ - умножить на единицу или вычесть ноль.
Добавлено Птн 27 Июл 2007 18:00:20 :
P.S. Или parseInt - тоже хороший способ.
Отсутствует
Infant
Спасибо!
Al_H
А ведь я даже когда-то (когда раньше пробовал закладку такую соорудить) так делал... Но метод как-то смущал...
Надеюсь, всё учел...
Если заканчивается не на .<буквоцифры>, то выскочит alert.
Уменьшение:
javascript:var cl=location.href;var exti=cl.lastIndexOf('.');var ext=cl.substring(exti,cl.length);if(ext.match(/^\.[a-z0-9]+$/i)){var fni=cl.lastIndexOf('/')+1;var fn=cl.substring(fni,exti);var fnst=fn.replace(/\d+$/,'');var cn=fn.substring(fnst.length,fn.length);var cnx=cn.match(/^0+$/)?'0':cn.replace(/^0*/,'');var z=cn.length-cnx.length;var n=parseInt(cnx);var nn=n-1;if(nn<0)alert(nn);else{if(n.toString().length>nn.toString().length)z++;var add='';for(var i=1;i<=z;i++)add+='0';var nl=cl.substring(0,fni)+fnst+add+nn+ext;location.href=nl;}}else alert('Invalid extension:\n'+ext);
Увеличение:
javascript:var cl=location.href;var exti=cl.lastIndexOf('.');var ext=cl.substring(exti,cl.length);if(ext.match(/^\.[a-z0-9]+$/i)){var fni=cl.lastIndexOf('/')+1;var fn=cl.substring(fni,exti);var fnst=fn.replace(/\d+$/,'');var cn=fn.substring(fnst.length,fn.length);var cnx=cn.match(/^0+$/)?'0':cn.replace(/^0*/,'');var z=cn.length-cnx.length;var n=parseInt(cnx);var nn=n+1;if(n.toString().length<nn.toString().length)z--;var add='';for(var i=1;i<=z;i++)add+='0';var nl=cl.substring(0,fni)+fnst+add+nn+ext;location.href=nl;}else alert('Invalid extension:\n'+ext);
Код в нормальном виде:
http://pastebin.mozilla-russia.org/89787
Только из about:neterror нельзя будет вернуться ...
В консоли пишет:
Ошибка системы безопасности: содержимое about:neterror?e=fileNotFound&u=file%3A///J%3A/<...>/04.htm. не имеет права загружать file:///J:/<...>/05.htm или ссылаться на него.
Отредактировано Infocatcher (27-07-2007 21:27:42)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
посидел тут немного, подумал...
надумал расширение Location Increment 0.1, которое делает именно то, что в примере выше, по нажатию альт+плюс и альт+минус
имхо юзефул
Отсутствует
я бы переписал это так
Зато у меня после 001.jpg будет 002.jpg
К тому же, куда интересней без всяких расширений – закладки ведь работают в IE7 и Opera (проверил, впрочем, сомнения были по большей части только относительно IE).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Решил сделать новую версию скрипта для изменения числовой части ссылок (http://example.com/dir/abc01.jpg => http://example.com/dir/abc02.jpg)
(function() { var inc = true; // true => ++, false => -- var loc = location.href; var m = loc.match(/^(.*\D)(\d+)(\D*)$/); if(!m) { alert("Here was no numbers:\n" + loc); return; } var urlStart = m[1]; var orgNum = m[2]; var urlEnd = m[3]; m = orgNum.match(/(0*)(\d+)/); var zeros = m[1]; var num = parseInt(m[2]); var newNum = inc ? ++num : --num; if(newNum == -1) { alert(loc + "\nNext is -1"); return; } newNum = zeros + newNum; if(zeros && newNum.length > orgNum.length) newNum = newNum.substr(1); else if(newNum.length < orgNum.length) newNum = "0" + newNum; location.href = urlStart + newNum + urlEnd; })();
Код для закладки (++):
javascript: (function() { var inc = true; var loc = location.href; var m = loc.match(/^(.*\D)(\d+)(\D*)$/); if(!m) { alert("Here was no numbers:\n" + loc); return; } var urlStart = m[1]; var orgNum = m[2]; var urlEnd = m[3]; m = orgNum.match(/(0*)(\d+)/); var zeros = m[1]; var num = parseInt(m[2]); var newNum = inc ? ++num : --num; if(newNum == -1) { alert(loc + "\nNext is -1"); return; } newNum = zeros + newNum; if(zeros && newNum.length > orgNum.length) newNum = newNum.substr(1); else if(newNum.length < orgNum.length) newNum = "0" + newNum; location.href = urlStart + newNum + urlEnd; })();
Код для закладки (--):
javascript: (function() { var inc = false; var loc = location.href; var m = loc.match(/^(.*\D)(\d+)(\D*)$/); if(!m) { alert("Here was no numbers:\n" + loc); return; } var urlStart = m[1]; var orgNum = m[2]; var urlEnd = m[3]; m = orgNum.match(/(0*)(\d+)/); var zeros = m[1]; var num = parseInt(m[2]); var newNum = inc ? ++num : --num; if(newNum == -1) { alert(loc + "\nNext is -1"); return; } newNum = zeros + newNum; if(zeros && newNum.length > orgNum.length) newNum = newNum.substr(1); else if(newNum.length < orgNum.length) newNum = "0" + newNum; location.href = urlStart + newNum + urlEnd; })();
P.S. Чтобы не потерялось... Сделать весь текст на странице полужирным и получить все ссылки со страницы.
Отредактировано Infocatcher (28-05-2008 03:35:38)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Страницы: 1