Страницы: 1
Пытаюсь использовать эту штуку для проверки валидности урла и вытаскивания из него имени домена.
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
Отсутствует
Но надо проверять, где именно определена функция makeURI.
Отредактировано Infocatcher (25-06-2008 15:44:03)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Вот здесь: 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ентов на части порвет !!!
Отсутствует
А, нашел.
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)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Похоже, в этом всё дело - если создать 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
Отсутствует
Страницы: 1