>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Архив тем http://forum.mozilla-russia.org/viewforum.php?id=17 >Поиски нужного аддона или как научить iMacros открывать все ссылки. http://forum.mozilla-russia.org/viewtopic.php?id=22287 |
abcdefucku > 26-03-2008 00:00:01 |
Друзья, здравствуйте! Быть может кому попадался на глаза аддон (или может быть кто-то умеет настраивать iMacros) под существующую задачу. Пример кода станицы: скрытый текст Выделить код Код:... <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> <p><a href="http://forum.mozilla-russia.org/">Форум Mozilla Россия</a></p> ... Сбил пятки в поисках решения Пожалуйста, помогите.. |
Infocatcher > 26-03-2008 00:21:09 |
Custom Buttons + вот такой код: Выделить код Код:var links = content.document.getElementsByTagName("a"); var hrefs = {}; for(var i = 0; i < links.length; i++) hrefs[links[i].href] = 1; var br = getBrowser(); for(var h in hrefs) br.addTab(h); Добавлено Wed Mar 26 00:25:15 2008 : |
abcdefucku > 26-03-2008 00:48:39 |
Infocatcher пишет
Дай Вам Бог здоровья! Большое спасибо! |
eLika > 29-09-2008 14:40:20 |
объясните, плиз, для чего это нужно? все необходимые ссылки на странице я открываю нажатием на колесо мыши, разве это не то же самое? заинтересовало... |
eLika > 05-12-2008 19:46:21 |
никто не отвечает а у меня еще вопрос по Linky - не открываются изображения при нажатии кнопки "открыть все изображения" |
Z&N > 05-12-2008 20:13:16 |
да там свои заморочки
eLika попробуйте что то из этого: |
Vladimir_S > 05-12-2008 20:22:39 |
eLika пишет
Правильно, я тоже колесом. Но у всех свои задвиги, и некоторые патологически не любят нажимать на колесо. Вот и начинают искать всякие обходы. |
eLika > 06-03-2009 19:40:14 |
Vladimir_S, спасибо, теперь могу четко оценить необходимость в такой фиче |
eLika > 06-03-2009 20:22:12 |
Z&N, спасибо за ссылки - проанализировала, хотелось бы несколько иного - предложенное Вами оформляет картинки в виде слайдшоу, а мне надо вместо полной прогрузки картинок скопировать их линки да загрузить менеджером закачек. С Linky сражаться устала, есть более простой вариант? |
Z&N > 07-03-2009 01:11:31 |
eLika а ну тогда например Orbit Downloader делает это прекрасно |
vanchelo > 14-03-2009 00:15:00 |
Infocatcher пишет
Подскажи пожалуйста, как научить этот скрипт открывать не все ссылки, а ссылки по заранее заданому шаблону |
Infocatcher > 14-03-2009 02:54:57 |
vanchelo пишет
Как-то так: скрытый текст Выделить код Код:(function() { var mask = {}; var maskForLinks = {}; var cnf = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService) .prompt( window, "Открыть все ссылки со страницы", "Только ссылки, содержащие (используйте /regexp/ для поиска с помощью регулярных выражений):", mask, "Фильтр по ссылке", maskForLinks ); if(!cnf) return; mask = mask.value; var allLinks = !mask; maskForLinks = maskForLinks.value; var isRegExp = false; if(/^\/(.+)\/([img]{0,3})$/.test(mask)) { try { mask = new RegExp(RegExp.$1, RegExp.$2); } catch(e) { alert("Некорректное регулярное выражение:\n\n" + e); return; } isRegExp = true; } function check(val) { return isRegExp ? mask.test(val) : val.toLowerCase().indexOf(mask) > -1; } var links = content.document.getElementsByTagName("a"); var hrefs = {}; var lnk, h, txt; for(var i = 0, len = links.length; i < len; i++) { lnk = links[i]; h = lnk.href; txt = lnk.textContent; if(allLinks || check(maskForLinks ? h : txt)) hrefs[h] = 1; } var br = getBrowser(); // Open a new tab as a child of the current tab (Tree Style Tab) if("TreeStyleTabService" in window) TreeStyleTabService.readyToOpenChildTab(br.selectedTab, true); for(var h in hrefs) br.addTab(h); if("TreeStyleTabService" in window) TreeStyleTabService.stopToOpenChildTab(br.selectedTab); })(); Если шаблон должен задаваться один раз (а не при каждом вызове), нужны подробности. |
vanchelo > 14-03-2009 11:41:17 |
Огромнейшее спасибо. А вообще скрипт СУПЕР. Очень нужный Еще раз спасибо |
Infocatcher > 14-03-2009 17:14:33 |
vanchelo пишет
http://www.google.ru/
«maps» + галочка «Фильтр по ссылке» => http://maps.google.ru/maps?hl=ru&tab=wl Регулярные выражения (более актуально для Firefox, но на английском):
«/images|maps/» + галочка «Фильтр по ссылке» => http://images.google.ru/imghp?hl=ru&tab=wi + http://maps.google.ru/maps?hl=ru&tab=wl vanchelo пишет
скрытый текст Выделить код Код:(function() { var mask = "..."; // простой фильтр // или регулярное выражение: // var mask = /.../; var maskForLinks = false; // фильтровать по "названию" ссылки var isRegExp = typeof mask != "string"; var allLinks = !mask; function check(val) { return isRegExp ? mask.test(val) : val.toLowerCase().indexOf(mask) > -1; } var links = content.document.getElementsByTagName("a"); var hrefs = {}; var lnk, h, txt; for(var i = 0, len = links.length; i < len; i++) { lnk = links[i]; h = lnk.href; txt = lnk.textContent; if(allLinks || check(maskForLinks ? h : txt)) hrefs[h] = 1; } var br = getBrowser(); // Open a new tab as a child of the current tab (Tree Style Tab) if("TreeStyleTabService" in window) TreeStyleTabService.readyToOpenChildTab(br.selectedTab, true); for(var h in hrefs) br.addTab(h); if("TreeStyleTabService" in window) TreeStyleTabService.stopToOpenChildTab(br.selectedTab); })(); |
vanchelo > 14-03-2009 20:55:56 |
Infocatcher |
vanchelo > 27-03-2009 12:46:21 |
Еще есть вопрос Возможно ли чтобы вместо открытия в новых вкладках ссылки копировались в буфер обмена??? |
Infocatcher > 27-03-2009 15:20:03 |
vanchelo пишет
Выделить код Код:var br = getBrowser(); // Open a new tab as a child of the current tab (Tree Style Tab) if("TreeStyleTabService" in window) TreeStyleTabService.readyToOpenChildTab(br.selectedTab, true); for(var h in hrefs) br.addTab(h); if("TreeStyleTabService" in window) TreeStyleTabService.stopToOpenChildTab(br.selectedTab); заменить на Выделить код Код:var res = []; for(var h in hrefs) res.push(h); Components.classes["@mozilla.org/widget/clipboardhelper;1"] .getService(Components.interfaces.nsIClipboardHelper) .copyString(res.join("\n")); |
vanchelo > 27-03-2009 17:15:28 |
Круто. Спасибо тебе за твой труд и оперативность |
vanchelo > 31-07-2009 15:12:54 |
скрытый текст Выделить код Код:(function() { var mask = "..."; // простой фильтр // или регулярное выражение: // var mask = /.../; var maskForLinks = false; // фильтровать по "названию" ссылки var isRegExp = typeof mask != "string"; var allLinks = !mask; function check(val) { return isRegExp ? mask.test(val) : val.toLowerCase().indexOf(mask) > -1; } var links = content.document.getElementsByTagName("a"); var hrefs = {}; var lnk, h, txt; for(var i = 0, len = links.length; i < len; i++) { lnk = links[i]; h = lnk.href; txt = lnk.textContent; if(allLinks || check(maskForLinks ? h : txt)) hrefs[h] = 1; } var res = []; for(var h in hrefs) res.push(h); Components.classes["@mozilla.org/widget/clipboardhelper;1"] .getService(Components.interfaces.nsIClipboardHelper) .copyString(res.join("\n")); Вопрос следующий, возможно ли сделать так чтобы копировались в буфер не ссылки а какой-либо текст по маске или соответствующий регулярному выражению |
Infocatcher > 31-07-2009 19:20:30 |
vanchelo пишет
Что за текст и где он будет находиться на странице? |
vanchelo > 02-08-2009 19:27:52 |
Infocatcher пишет
Любой видимый текст, т.е. например нужно скопировать текст на странице XXXX. |
Infocatcher > 02-08-2009 20:13:04 |
В общем случае это довольно-таки нетривиально. Или даже Хотя визуально и там, и там – «abcdefgh». Опять же, что считать границами текста. Если проверять только текстовые узлы, то примерно вот так: скрытый текст Выделить код Код:var mask = "кар"; // var mask = /кар/i; var check = typeof mask == "string" ? function(s) { return s.toLowerCase().indexOf(mask) != -1; } : function(s) { return mask.test(s); }; var emptyMask = /^\s*$/; var notInTags=["head", "noscript", "option", "script", "style", "title", "textarea"]; var doc = content.document; var res = doc.evaluate( "//text()[not(ancestor::" + notInTags.join(") and not(ancestor::") + ")]", doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); var r = []; var node, tc; for(var i = 0; node = res.snapshotItem(i); i++) { tc = node.textContent; if(emptyMask.test(tc)) continue; if(check(tc)) r.push(tc); } r = r.join("\n"); Components.classes["@mozilla.org/widget/clipboardhelper;1"] .getService(Components.interfaces.nsIClipboardHelper) .copyString(r); //alert(r); Для http://www.google.ru/ копирует
P.S. Идея взята из http://userscripts.org/scripts/review/23362. 02-08-2009 20:19:01 02-08-2009 20:29:24 скрытый текст Выделить код Код:var mask = "кар"; //var mask = /кар/i; var check = typeof mask == "string" ? function(s) { return s.toLowerCase().indexOf(mask) != -1; } : function(s) { return mask.test(s); }; var emptyMask = /^\s*$/; var notInTags=["head", "noscript", "option", "script", "style", "title", "textarea"]; var xPath = "//text()[not(ancestor::" + notInTags.join(") and not(ancestor::") + ")]"; var r = []; function findText(doc) { var res = doc.evaluate(xPath, doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var node, tc; for(var i = 0; node = res.snapshotItem(i); i++) { tc = node.textContent; if(emptyMask.test(tc)) continue; if(check(tc)) r.push(tc); } } function parseWin(win) { findText(win.document); for(var i = 0, len = win.frames.length; i < len; i++) parseWin(win.frames[i]); } parseWin(content); r = r.join("\n"); Components.classes["@mozilla.org/widget/clipboardhelper;1"] .getService(Components.interfaces.nsIClipboardHelper) .copyString(r); //alert(r); |
RIPASSW > 12-10-2009 15:50:57 |
Скажите плиз как выдержать синтаксис в скрипте. Вот регулярное выражение (http:\/\/)?([\d\w\-]+(\.[\d\w\-]+)*).edit.\d{7}. для открытия ссылки типа скрытый текст Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст. |
InfSub > 04-04-2015 05:45:15 |