Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№125-06-2008 15:23:19

INFOMAN
Телепаты в отпуске
 
Группа: Extensions
Откуда: Кишинев
Зарегистрирован: 31-12-2005
Сообщений: 1099
UA: Firefox 3.0
Веб-сайт

[solved] nsIURL и ошибки

Пытаюсь использовать эту штуку для проверки валидности урла и вытаскивания из него имени домена.

Выделить код

Код:

var uri = Components
    .classes["@mozilla.org/network/simple-uri;1"]
    .createInstance(Components.interfaces.nsIURI);
uri.spec = "http://infoman.local/sidebartest.html";
try
{
    alert(uri.host);
}
catch (e)
{
    var txt = "";
    for (var i in e)
    {
        txt += i + ": " + e[i] + "\n";
    }
    alert(txt);
}

В алерте получаю:

Выделить код

Код:

QueryInterface: function QueryInterface() {
    [native code]
}
message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.host]
result: 2147500037
name: NS_ERROR_FAILURE
filename: chrome://extname/content/browserOverlay.js
lineNumber: 128
columnNumber: 0
location: JS frame :: chrome://extname/content/browserOverlay.js :: anonymous :: line 128
inner: null
data: null
initialize: function initialize() {
    [native code]
}

Вопрос: почему может не срабатывать? гугл не особо помогает, судя по http://developer.mozilla.org/en/docs/nsIURI должно возвращать хост, однако выдаёт ошибку.

Отредактировано INFOMAN (25-06-2008 16:00:46)


Закрой кран
Включи свет ©
Fire! Kill IE is your desire | NULL | NULL

Отсутствует

 

№225-06-2008 15:42:28

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4296
UA: Firefox 3.0

Re: [solved] nsIURL и ошибки

Выделить код

Код:

var uri = makeURI("http://infoman.local/sidebartest.html");
alert(uri.host);

Но надо проверять, где именно определена функция makeURI.

Отредактировано Infocatcher (25-06-2008 15:44:03)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№325-06-2008 15:46:00

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: [solved] nsIURL и ошибки

Вот здесь: http://www.xulplanet.com/references/xpcomref/ifaces/nsIURI.html написано:

An object of this interface must be created in the following way:

ioService.newURI(uri, charset, baseuri);

Похоже, в этом всё дело - если создать nsIURI через nsIIOService, ошибка не появляется.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№425-06-2008 15:47:34

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4296
UA: Firefox 3.0

Re: [solved] nsIURL и ошибки

А, нашел.
chrome://global/content/contentAreaUtils.js (Firefox 2.0.0.х, 3.0; другие не проверял)

Выделить код

Код:

function makeURI(aURL, aOriginCharset, aBaseURI)
{
  var ioService = Components.classes["@mozilla.org/network/io-service;1"]
                            .getService(Components.interfaces.nsIIOService);
  return ioService.newURI(aURL, aOriginCharset, aBaseURI);
}

Отредактировано Infocatcher (25-06-2008 15:49:50)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№525-06-2008 15:59:52

INFOMAN
Телепаты в отпуске
 
Группа: Extensions
Откуда: Кишинев
Зарегистрирован: 31-12-2005
Сообщений: 1099
UA: Firefox 3.0
Веб-сайт

Re: [solved] nsIURL и ошибки

Anton пишет:

Похоже, в этом всё дело - если создать nsIURI через nsIIOService, ошибка не появляется.

Спасибо, помогло.

Выделить код

Код:

var util = Components
    .classes["@mozilla.org/network/util;1"]
    .getService(Components.interfaces.nsIIOService);
uri = util.newURI("http://infoman.local/sidebartest.html", null, null);

Закрой кран
Включи свет ©
Fire! Kill IE is your desire | NULL | NULL

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]