>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >[solved] nsIURL и ошибки http://forum.mozilla-russia.org/viewtopic.php?id=24323 |
INFOMAN > 25-06-2008 15:23:19 |
Пытаюсь использовать эту штуку для проверки валидности урла и вытаскивания из него имени домена. Выделить код Код: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 должно возвращать хост, однако выдаёт ошибку. |
Infocatcher > 25-06-2008 15:42:28 |
Но надо проверять, где именно определена функция makeURI. |
Anton > 25-06-2008 15:46:00 |
Вот здесь: http://www.xulplanet.com/references/xpcomref/ifaces/nsIURI.html написано:
Похоже, в этом всё дело - если создать nsIURI через nsIIOService, ошибка не появляется. |
Infocatcher > 25-06-2008 15:47:34 |
А, нашел. Выделить код Код: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); } |
INFOMAN > 25-06-2008 15:59:52 |
Anton пишет
Спасибо, помогло. Выделить код Код:var util = Components .classes["@mozilla.org/network/util;1"] .getService(Components.interfaces.nsIIOService); uri = util.newURI("http://infoman.local/sidebartest.html", null, null); |