>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >ShouldLoad и редирект. http://forum.mozilla-russia.org/viewtopic.php?id=63099 |
f00fc7c8 > 29-04-2014 17:39:04 |
Господа, приветствую. Проблема следующая: есть адд-онс Redirector, который тыщу лет не поддерживается и не будет, и есть в нём такая вещь: // nsIContentPolicy implementation Вот на этом LoadURI хренеет TabMixPlus и, при вызове ссылки с внешнего приложения, генерирует и заполняет лишнюю вкладку, если активная вкладка - пустая. Копаться в дебрях TMP нет никакого желания, активной реакции на багрепорт - тоже не видно, посему хотелось бы поправить Redirector. Попробовал тупо воткнуть вместо этих двух строк contentLocation.spec=redirectUrl; Работает. Но это идеологически неверно же, остальные поля в contentLocation все заполнить нельзя, часть ридонли. А попытка написать "contentLocation=IOService.newURI(redirectUrl,contentLocation.originCharset,null);" срабатывает только один раз на один URL, после чего, видимо, что-то кэшируется и редирект больше не происходит. Может кто-то подскажет какой то ещё вариант подмены URL в ShouldLoad? Или иное, несложное, решение. |
Infocatcher > 29-04-2014 19:09:07 |
Можно попробовать использовать nsIHttpChannel.redirectTo(). Но придется переписать логику... Вот пример: https://gist.github.com/Infocatcher/9523286 А применительно к Tab Mix Plus – смотря что там переопределяется – loadURI() или loadURIWithFlags(). Выделить код Код:<method name="loadURI"> <parameter name="aURI"/> <parameter name="aReferrerURI"/> <parameter name="aCharset"/> <body> <![CDATA[ const nsIWebNavigation = Components.interfaces.nsIWebNavigation; const flags = nsIWebNavigation.LOAD_FLAGS_NONE; this.loadURIWithFlags(aURI, flags, aReferrerURI, aCharset); ]]> </body> </method> |
f00fc7c8 > 29-04-2014 22:05:51 |
Infocatcher пишет
Спасибо, гляну. Вопрос в том, действительно ли это "несложное" решение.. А логики никакой особой в Редиректоре и нет. Там вся суть редиректа ровно вот в loadURI по ShouldLoad, остальное сплошная работа собственно с регекспами, UI и собственным конфигом. Просто ТабМикс дважды умудряется запустить загрузку таба. Infocatcher пишет
Если б там что-то одно переопределялась - я б с него и начал. Там дохрена хаков внутренних функций. Из-за опции single window mode они вглубь тянутся, вплоть до того, что считается пустым табом, похоже.. |
Infocatcher > 29-04-2014 23:01:13 |
f00fc7c8 пишет
Там еще перенаправления отслеживаются (и сравниваются с правилами). f00fc7c8 пишет
Я к тому, что можно попробовать вызывать из Redirector'а не loadURI(), а loadURIWithFlags(). |
f00fc7c8 > 29-04-2014 23:21:25 |
Infocatcher пишет
Первое - пробовал, второе - нет.. попробую, если первый мой метод глючить будет. |