Как получить строку агента пользователя firefox? - PullRequest
3 голосов
/ 20 июля 2011

Я создаю дополнение для FireFox, которое имитирует веб-сайт, но работает из локальной библиотеки. (Если вы хотите узнать больше, посмотрите здесь )

Я ищу способ получить строку пользовательского агента, которую FireFox отправил бы, если бы выполнял простой http. Я сам делаю nsIProtocolHandler и обслуживаю свою собственную реализацию nsIHttpChannel, поэтому, если у меня просмотр источника , похоже, мне придется делать всю работу самостоятельно.

Если в nsHttpHandler нет контракта / идентификатора объекта, который я мог бы использовать для создания экземпляра на короткое время, чтобы получить UserAgent? (Хотя я заметил, что мне нужно будет позвонить Init(), потому что он делает InitUserAgentComponents(), и надеюсь, что он туда доберется ... И я думаю, что обработчик протокола http выполняет каналы и обработчики, чтобы не было контракта напрямую к nsHttpHandler.)

Если у меня есть небольшой взгляд через стену Я замечаю этот глобально доступный вызов ObtainUserAgentString , который делает именно это в этом параллельном измерении ...

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Вы можете получить его через XPCOM следующим образом:

var httpHandler = Cc["@mozilla.org/network/protocol;1?name=http"].
  getService(Ci.nsIHttpProtocolHandler);
var userAgent = httpHandler.userAgent;
3 голосов
/ 20 июля 2011

Очевидно, что Firefox изменил как это было сделано в версии 4. Вы пробовали:

alert(window.navigator.userAgent);
1 голос
/ 20 июля 2011

Если по какой-то причине вам действительно нужно использовать NPAPI, как вы предлагаете в своих тегах, вы можете использовать NPN_UserAgent , чтобы получить его;однако я был бы шокирован, если бы вам действительно нужно было сделать это только для расширения.Скорее всего, Энтони ответит больше, чем вы ищете.

...