>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Запуск JavaScript из закладок http://forum.mozilla-russia.org/viewtopic.php?id=18214 |
Infocatcher > 26-07-2007 20:09:28 |
Хоть это и не совсем (а совсем не ) разработка... (Хотя... ) Известно, что, помимо прямого назначения, из закладок можно еще и скрипты запускать. А вот, что удалось мне. BBCode Выделить код Код: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(); } Хм, глюк какой-то... Должно быть Код для закладки (должна быть только одна строка): Выделить код Код: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 И можно ли вообще воспользоваться чем-то вроде document.commandDispatcher.focusedElement (как можно сделать из chrome://)? Изменение размера окна (увы, не работает при запрете для JavaScript соответствующего действия) Выделить код Код: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)? А то у меня в свое время ничего полезного не вышло... С механизмом все просто: |
Anton > 26-07-2007 21:16:35 |
последнее выражение передавать в void, например для ресайза: |
Infocatcher > 26-07-2007 23:35:31 |
Anton пишет
О, так гораздо лучше. Спасибо! |
Infocatcher > 27-07-2007 17:17:41 |
Некоторые наработки: Выделить код Код: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)? |
Infant > 27-07-2007 17:51:45 |
Q: Как преобразовать строку в число (в моей форме пользователь A: Метод parseInt: |
Al_H > 27-07-2007 17:59:29 |
Infocatcher Добавлено Птн 27 Июл 2007 18:00:20 : |
Infocatcher > 27-07-2007 21:25:39 |
Infant Al_H Надеюсь, всё учел... Уменьшение: Выделить код Код: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); Код в нормальном виде: Только из about:neterror нельзя будет вернуться ... Выделить код Код:Ошибка системы безопасности: содержимое about:neterror?e=fileNotFound&u=file%3A///J%3A/<...>/04.htm. не имеет права загружать file:///J:/<...>/05.htm или ссылаться на него. |
Shutnik > 28-07-2007 08:00:06 |
Infocatcher пишет
ужас какой, имхо очень громоздко получилось |
Shutnik > 28-07-2007 11:08:19 |
посидел тут немного, подумал... |
Infocatcher > 28-07-2007 13:20:20 |
shutnik пишет
Зато у меня после 001.jpg будет 002.jpg |
Infocatcher > 28-05-2008 03:28:23 |
Решил сделать новую версию скрипта для изменения числовой части ссылок (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. Чтобы не потерялось... Сделать весь текст на странице полужирным и получить все ссылки со страницы. |
Shutnik > 28-05-2008 17:20:05 |
http://www.squarefree.com/pornzilla/ |