>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >tabbrowser.addTab: как открыть страницу в нужной кодировке? http://forum.mozilla-russia.org/viewtopic.php?id=52680 |
hydrolizer > 04-12-2011 16:46:11 |
Ситуация: имеется файл, представляющий из себя plain text в UTF-8 w/o BOM. Задача проста: открыть файл в новой вкладке в кодировке именно UTF-8, т.к. файл содержит русскоязычный текст. Вызов addTab в виде addTab( URL, {referrerURI: ..., charset: ..., postData: ..., owner: ..., allowThirdPartyFixup: ..., relatedToCurrent: ... }) - не работает: файл открывается в кодировке ISO-8859-1. Пробовал вызывать метод в такой форме: addTab( URL, referrerURI, charset, postData, owner, allowThirdPartyFixup ) - та же самая ситуация: кодировка при открытии - ISO-8859-1. Выделить код Код:<method name="loadURIWithFlags"> <parameter name="aURI"/> <parameter name="aFlags"/> <parameter name="aReferrerURI"/> <parameter name="aCharset"/> <parameter name="aPostData"/> <body> <![CDATA[ if (!aURI) aURI = "about:blank"; if (aCharset) { try { this.documentCharsetInfo.parentCharset = this.mAtomService.getAtom(aCharset); } catch (e) { } } if (!(aFlags & this.webNavigation.LOAD_FLAGS_FROM_EXTERNAL)) this.userTypedClear++; try { this.webNavigation.loadURI(aURI, aFlags, aReferrerURI, aPostData, null); } finally { if (this.userTypedClear) this.userTypedClear--; } ]]> </body> </method> Сделал вызов этого метода - ситуация абсолютно аналогичная, указание кодировки ни на что не влияет. Ради интереса выставил у уже загруженного документа кодировку вручную, и посмотрел, чему равен this.documentCharsetInfo.parentCharset экземпляра xul:browser - он оказался равен... null. Выделить код Код:var docCharset = gBrowser.docShell.QueryInterface(Ci.nsIDocCharset); docCharset.charset = "UTF-8"; PlacesUtils.history.setCharsetForURI(getWebNavigation().currentURI, "UTF-8"); BrowserReloadWithFlags(nsIWebNavigation.LOAD_FLAGS_CHARSET_CHANGE); Этот код работает именно так, как требуется, но есть одно "но": документ, который я собираюсь загружать - результат некоторой генерации, и результат достаточно объемный - не хотелось бы его сначала загружать, а потом перегружать в нужной кодировке. Нужно сразу загрузить в требуемой кодировке. |
hydrolizer > 04-12-2011 19:26:18 |
okkamas_knife пишет
Можно сделать еще проще: открыть пустую вкладку, для неё выставить UTF-8, и в эту вкладку загрузить нужный документ - так тоже работает нормально. Мне просто интересно, можно ли добиться от стандартного метода того поведения, которое описано в документации. |