Есть ли возможность с помощью дополнений в современных браузерах определять обработчики для нестандартных протоколов?
Интересует именно обработка протокола внутри браузера, а не вызов внешней утилиты т.е. нужно чтобы при нажатии на ссылку вида someproto://something браузер загружал страницы используя кастомный (достаточно простой) обработчик, а точнее, в фоне транслировал адреса из вида someproto://something в http://somehost/something.
Также важно, чтобы в адресной строке оставался не преобразованный адрес нового формата.
С разработкой дополнений раньше не сталкивался — пригодятся любые ссылки, примеры, указания на документацию.
registerProtocolHandler при переходе по ссылке, в адресной строке ставит адрес веб-обработчика, а этого хотелось бы избежать (обновил вопрос).
Но всё равно, спасибо.
Да, немного не то. Если я правильно понял, intent — особый встраиваемый в страницу обработчик.
Мне же нужно реализовать поддержку протокола для браузера — так, чтобы можно было просто сёрфить веб через внешнее ПО со своим API.
Решение нужно, в первую очередь, под Linux т.к. под Windows реализация протокола пока не работает. Т.е. вариант с регистрацией через реестр, в перспективе, интересен, но не решает текущей задачи.
Я потому в сторону дополнений к браузерам смотреть начал — дополнение кроссплатформенно (хоть и браузерозависимо).
А разве в современных Линуксах, точнее в десктопных средах, нет обработчиков протоколов? наверняка есть. Просто этот вариант — это идеологически правильный способ, так как например в таком случае будут открываться ссылки из других программ, вроде скайпа или IM. То есть, это будет полноценная ссылка, которую можно переслать по почте или IM.
Пример реализации — uTorrent регистрируется как обработчик magnet-ссылок, и такие ссылки открываются из любой программы, скайп регистрируется как обработчик протокола skype: и так далее.
Плюс, насколько я понял из диагонального чтения MSDN, регистрация обработчика протокола через реестр, работает примерно как network.protocol-handler.external в Firefox т.е. вызывает внешний обработчик и передаёт ему адрес. Возврата контента в браузер не предполагается.
Я не нашёл способа зарегистрировать в DE протокол, который может быть открыт через браузер, а не просто внешним приложением. Проблема не в том, как вызвать программу-обработчик по ссылке, а в том, как передать результат в браузер, чтобы он понял, что это страница, которую нужно отрендерить.