>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Можно ли быстро написать такое расширение? http://forum.mozilla-russia.org/viewtopic.php?id=58050 |
Gegogat > 14-02-2013 09:30:18 |
Здравствуйте. В общем нужно расширение, которое будет работать примерно по такому алгоритму: |
Gegogat > 15-02-2013 08:38:10 |
Спасибо, код работает. Но натолкнулся на такую проблему. Допустим я захожу на страницу с несколькими ссылками, кликаю по ним колесиком мыши и соответственно они открываются в новых вкладках. Этот код находит нужные ссылки и мне требуется открыть эти ссылки в тех вкладках, в которых они были найдены. Или как вариант открыть ссылки в новых табах, а эти табы закрыть. Вот тут у меня загвоздка. Если пробовать открывать через document.location.href или document.location.replace, то оно открывается на той вкладке, которая в фокусе, причем пропадает вообще вся навигация из браузера (вкладки, строка адреса и т.д.) и тупо остается эта голая страница. Через loadURI тоже открывается всё в той вкладке, которая в фокусе. Открыть в новой вкладке получилось, через window.gBrowser.loadOneTab, но я не понимаю как тогда закрыть те вкладки, на которых была найдена ссылка. Как такое можно организовать? или может есть проще путь? |
Dumby > 16-02-2013 03:33:19 |
Gegogat пишет
Не, не делай так, тут document это документ самого окна Firefox. Gegogat пишет
Возможно так сойдёт ? скрытый текст Выделить код Код:var conf = { "about:about": /support/, "about:": /license/, "https://developer.mozilla.org/en-US/docs/Code_snippets": /Alerts_and_Notifications/ }; function test(e) { var doc = e.target; var win = doc.defaultView; var topDoc = win.top.document; if (!(topDoc.location in conf)) return; win.addEventListener("load", function onLoad() { win.removeEventListener("load", onLoad, false); var links = doc.links; for (var i = 0; i < links.length; i++) { if (conf[doc.location].test(links[i])) { topDoc.location = links[i]; break; } } }, false); } addEventListener("DOMContentLoaded", test, false, document.getElementById("content")); |