Страницы: 1
Ситуация: имеется файл, представляющий из себя 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.
Заглянул в tabbrowser.xml и в browser.xml: всё вышеупомянутое в итоге сводится к вызову метода loadURIWithFlags экземпляра xul:browser. Выглядит он так:
<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);
Этот код работает именно так, как требуется, но есть одно "но": документ, который я собираюсь загружать - результат некоторой генерации, и результат достаточно объемный - не хотелось бы его сначала загружать, а потом перегружать в нужной кодировке. Нужно сразу загрузить в требуемой кодировке.
Отсутствует
как он загрузится в таком случае?
Можно сделать еще проще: открыть пустую вкладку, для неё выставить UTF-8, и в эту вкладку загрузить нужный документ - так тоже работает нормально. Мне просто интересно, можно ли добиться от стандартного метода того поведения, которое описано в документации.
Отсутствует
Страницы: 1