Pull to refresh
78
0

Пользователь

Send message
Добавил к коду:

xhr.onreadystatechange = function (aEvt) {
	if (xhr.readyState == 4) {
		if(xhr.status == 200){
			var xmldoc = xhr.responseXML;
			var elmList = xmldoc.getElementsByTagName('title');
			Components.classes["<hh user=mozilla>.org/consoleservice;1"].
				getService(Components.interfaces.nsIConsoleService).logStringMessage(elmList[0].textContent);
		}else{
			Components.classes["<hh user=mozilla>.org/consoleservice;1"].
				getService(Components.interfaces.nsIConsoleService).logStringMessage(xhr.status + "!");
		}
	}
	else {
		Components.classes["<hh user=mozilla>.org/consoleservice;1"].
			getService(Components.interfaces.nsIConsoleService).logStringMessage(xhr.readyState);
	}
};


На рабочих страницах выдаёт: 1-2-3-3-3-3-3-3-3-title(в консоль и в alert). На проблемной выдаёт: 1-2-3-3-3-3-3-3-3-3-3-3-timeout в alert и ошибку в консоль «xmldoc is null»
Да, приблизительно такими аферами я и занимался раньше. Но это сопряжено с такой путаницей (дополнительные скрытые браузеры или iframe для парсинга по URL с обратными вызовами, повешенными на окончание загрузки кода; непредсказуемое поведение при скармливании всяким div-ам полного или рискованно обрезанного кода; передача скрытым браузерам responseText через data: URI опять таки с обратными вызовами на завершение загрузки). Всё это опасно шатается и трещит по швам. Так хотелось чистоты и порядка)
Я запостил на русской багзилле (почти полностью повторив статью). Но чтобы постить на английской, мне бы хотелось как-то сузить проблему, чтобы перевести только существенное, выжимку (у меня не очень хорошо получается писать на английском). Если за несколько дней больше ничего не прояснится, попробую составить английский багрепорт из того, что есть.
Не уверен, правильно ли я проверял в Chrome. Поскольку я не нашёл возможности запустить код в контексте браузера, пришлось открыть страницу трекера в браузере, чтобы не получать предупреждений о кроссбраузерных запросах, и тогда уже запускать код из консоли (нужно было только удалить две специфические строчки для Firefox: с mozBackgroundRequest и channel.loadFlags).

На последнем Chrome никакий таймаутов не происходит.
Спасибо вам большое. Это важное добавление, а у меня самого нет возможности перепроверить на 64.

Да, mozBackgroundRequest, наверное, запустили начиная с 14-й версии, у меня тоже вылетало на 13-й, хотя на сайте разработчиков не удалось найти информации о совместимости этого свойства (оно нестандартное, но здесь его применять логично).
Дело в том, что при responseType = 'document' невозможно получить доступ к responseText и работать с кодом напрямую. А если сначала получить свойство responseText, всё равно это ничего не даст, потому что оно только для чтения. А если бы и удалось его изменить, responseType = 'document' нельзя потом задать задним числом и получить DOM изменённого кода. Две стратегии расходятся с самого начала.

Можно, конечно, получить код, исправить его и отослать скрытому браузеру для парсинга через data: URI, но в этом нет нужды, так как скрытый браузер и без чистки хорошо справляется, этот как раз один из тех хитрых способов по ссылке в начале статьи.
Firfox 13 — та же проблема (и не работает параметр mozBackgroundRequest, вызывает сбой).
Firfox 14 — та же проблема.
Firfox 15 — та же проблема.

Internet Explorer, Opera, Safari (WebKit) — судя по списку совместимости, нет поддержки responseType = 'document'.

На последнем хроме сейчас потестирую.
Да, 32 бита. Это возможно, но было бы странно, потому что ведь в браузере всё рендерится, а нагрузка должна быть при этом намного больше. Конечно, по логике, упомянутой администратором forums.mozilla.org (мол, мало кто использует responseType = «document» в XMLHttpRequest), могли бы урезать ресурсы по сравнению с рендерингом, но как-то уж сильно урезали и без всякого упоминания об этом. Надеюсь, всё же непреднамеренный баг.
Спасибо. Сейчас попробую потестировать на других версиях firefox и в других браузерах. По ходу дела постараюсь отчитываться.
Долго пользовался, но с 14 версии основной функционал перекрывается штатным загрузчиком (небольшая кнопка на тулбаре с индикаторами закачки и оставшимся временем в секундах). Хотя, может, кому-то нужна более детальная информация.
Вот спасибо, не заметил эту кнопку. Правда, жаль, что цвет не изменяется.
Ну о каких-то настройках ведь говорят. А расширения часто делают ради того, чтобы удобнее было непосвящённым несколько ключей в about:config изменить. Конечно, вышеупомянутые расширения могут быть намного сложнее, я не проверял.
Простите, о каких настройках идёт речь? В about:config есть ключ, возвращающий иконку в адресную строку?
Лично для меня удобнее всего было бы получать JSON в UTF-8 (API ЖЖ, например, выдаёт или пары ключ-значение, разделённые переводом строки, что очень неудобно, или XML, что довольно расточительно).
Являюсь автором расширения для Firefox «Rutracker.Org Addons»:

rutracker.org/forum/viewtopic.php?t=1877183
addons.mozilla.org/ru/firefox/addon/rutrackerorg-addons/
habrahabr.ru/blogs/p2p/94240/ (статья немного устарела).

Как видно, расширению уже почти два с половиной года, по возможности я реализовал большинство просьб пользователей (более двух тысяч комментариев в теме на трекере). Могу лишь перечислить те причины, по которым мне приходится парсить страницы. Было бы, конечно, намного удобнее, если бы это можно было делать при помощи API, как я делаю в другом своём расширении по отношению к Живому Журналу.

1. Получение структурированного списка форумов и подфорумов (чтобы составлять в будущем запросы о новостях, а также узнавать обновления в структуре сайта), причём как всех форумов, так и форумов только для раздач. Сейчас мне для этого приходится парсить списки в формах поиска соответственно по форуму и трекеру.

2. Получение новых раздач в реальном времени по выбранным форумам (приходится парсить выдачу поиска по трекеру с опцией новых раздач с последнего посещения и с пометкой затем всех форумов как прочитанных при помощи кук). Единственный способ получать все новые раздачи без задержки и в полном объёме (с возможностью сразу автоматически загружать нужные торрент-файлы).

3. Суррогат подписки на комментарии при помощи разбора последней страницы темы и идентификаторов комментариев на ней — или старницы моих сообщений для слежения за темами, в которых отметился пользователь (что более экономно, поскольку одной страницей получаем последние комментарии в десятках тем).

4. Статистика пользователя при помощи парсинга профиля.

5. Наличие новых сообщений парсингом шапки на любой странице.

6. Получение UID пользователя парсингом ссылки на профиль.

7. Пользователи просили о возможности добавлять задания для автозагрузки на домашний компьютер из других мест (когда это почему-либо не хочется делать через веб-интерфейс к торрент-клиенту). Чаще всего они делают это, добавляя раздачи на страницу будущих раздач, потом расширение парсит эту страницу и передаёт торрент-файлы в папку автозагрузки клиента. Возможно, и для этой страницы можно было бы сделать API.

8. Думаю, полезным было бы также получать список раздач по UID пользователя.

6. Парсинг торрент-файлов для получения содержаний раздач.

Здорово. Спасибо большое, вам и ABBYY.
Возможность добавления уже обнадёживает, спасибо. Возможно дело в том, что нужно и правда обучать шаблон, так как по умолчанию программа не видит параллелей между особенной графикой и расширенным символом. Но это очень долго, нужно двигаться буква за буквой, пока весь возможный набор комбинаций не будет перебран. И, к сожалению, для многих книг нужно будет это повторять. Так что не смею больше вас обременять, главное я узнал. Не мучайтесь. Разве что в вас проснётся спортивный интерес и упрямство)
В том то и дело, что лет пять назад я пробовал воспользоваться редактором языков для обучения, но, насколько я помню, даже добавить гласные с диакритиками, изображённые на рисунке выше, я не смог (в наборах символов не было расширенных диапазонов) К сожалению, не помню, какой версией FR я пользовался. Так как в указанной вами статье никаких конкретных иллюстраций, относящихся именно к греческой политонике, нет, остаётся вопрос: действительно ли в десятой/одиннадцатой версии можно создать язык со всем тем набором «двухсот возможных сочетаний», чтобы обучение шаблона смогло заработать?

Information

Rating
Does not participate
Date of birth
Registered
Activity