Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№111-12-2009 21:21:34

Elena
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 24-05-2006
Сообщений: 65
UA: Safari 4.0

Подмена about:neterror

День добрый!
Нужно подменять стандартное сообщение ff о том что сервер не доступен, которое возникает, например когда неправильно набран адрес или нет доступа в интернет.
Сейчас отлавливаю загрузку страницы и там пыталсь сделать следующиее

Выделить код

Код:

event.originalTarget.documentElement.innerHTML=мой текст.

только вот загвоздка в том, что после загрузки стандартной формы документ имеет тип application/xhtml+xml
А тот, котоый мне надо показать text/css. поэтому такое присваивание не работает (ругается на формат моего документа).

соответственно, вижу несколько вариантов решения проблемы
1. как изменить сontentType на нужный?
2. где-то в настройках ff  прописать чтобы вместо стандартной страницы  about:neterror, грузилось то что мне нужно с нужным типом и уже его переоределять?
3. удалить текущий документ и на его месте создать новый с нужным текстом. не знаю как это сделать

Отсутствует

 

№212-12-2009 00:55:34

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Подмена about:neterror

Что мешает заменить «.innerHTML=» на DOM-методы или на https://developer.mozilla.org/en/Parsin … _DOM_trees ?

3. удалить текущий документ и на его месте создать новый с нужным текстом. не знаю как это сделать

https://developer.mozilla.org/En/Chrome … n#override


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№312-12-2009 23:22:52

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630
UA: Seamonkey 2.0

Re: Подмена about:neterror

Elena

3. удалить текущий документ и на его месте создать новый с нужным текстом. не знаю как это сделать

А я в Симанки давно уже добавил к стандартным фразам в netError.dtd свои ссылки некоторые постоянные, чтобы они чаще перед глазами оказывались. :)

Добавлено 12-12-2009 23:27:12
А сама страница - netError.xhtml
С ней же тоже можно поколдовать.
Я вот только кнопку обновления перемещаю снизу вверх. И расширяю её на полокна так примерно.

Отсутствует

 

№413-12-2009 16:55:36

Elena
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 24-05-2006
Сообщений: 65
UA: Safari 4.0

Re: Подмена about:neterror

Infocatcher пишет

Что мешает заменить «.innerHTML=» на DOM-методы или на https://developer.mozilla.org/en/Parsin … _DOM_trees ?

Банальное незнание как это сделать :(
Подскажите пожалуйста, у меня есть documentElement.innerHTML и text/css, прочитанный из файла как такую подмену корректно сделать?

Отредактировано Elena (13-12-2009 16:55:53)

Отсутствует

 

№514-12-2009 00:21:43

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Подмена about:neterror

Эммм... не совсем понимаю, что нужно получить.
Изменить текст сообщения страницы about:neterror или добавить туда свой стиль?

Вот я открываю about:neterror и запускаю из адресной строки:

Выделить код

Код:

javascript: document.documentElement.innerHTML = "<strong>some text</strong>"; void 0;

Все работает.

Еще раз открываю about:neterror, открываю консоль ошибок (в окне, это важно) и выполняю:

Выделить код

Код:

top.opener.content.document.documentElement.innerHTML = "<strong>some text</strong>";

И тоже работает.

Стало быть, или при работе из расширения присутствует какая-то помеха, или присваивается что-то не то.
Хотя с оберткой (которая должна присутствовать при работе с содержимым страниц из расширения) тоже работает (снова из консоли ошибок):

Выделить код

Код:

var win = new XPCNativeWrapper(top.opener.content, "document");
var doc = new XPCNativeWrapper(win.document, "documentElement");
var de = new XPCNativeWrapper(doc.documentElement, "innerHTML");
de.innerHTML = "<strong>some text</strong>"

(Впрочем, не уверен, что обертки положено создавать именно так – начиная с Firefox 1.5 все должно заворачиваться само.)

Отредактировано Infocatcher (14-12-2009 00:22:07)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№614-12-2009 11:41:17

Elena
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 24-05-2006
Сообщений: 65
UA: Safari 4.0

Re: Подмена about:neterror

Infocatcher пишет

Эммм... не совсем понимаю, что нужно получить.
Изменить текст сообщения страницы about:neterror или добавить туда свой стиль?

нужно изменить текст.
поковырялась вчера.
Получается такая странная вещь - у меня есть html-ка которую надо показвыать вместо about:neterror.
Если я эту форму добавляю вместо любой страницы, которая благополучно загрузилась (doc.innerHTML=...), то все отображается корректно.
Если эту же форму пытаться сделать вместо neterror (innerHTML=...) то она присваивается, но отображается не корректно, не подхватываются прописанные стили.
Если эту же форму просто открыть в броузере (chrome://my_ext/content/my_form.html), то все отображается правильно.

Отсутствует

 

№714-12-2009 15:52:22

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Подмена about:neterror

но отображается не корректно, не подхватываются прописанные стили.

В консоли ошибок при этом что-нибудь пишет?

Вообще, судя по

Выделить код

Код:

Ошибка системы безопасности: содержимое «about:neterror» не имеет права загружать chrome://global/skin/icons/warning-16.png или ссылаться на него.

, возможно, нужно ссылаться на resource:// или добавлять в chrome.manifest «contentaccessible=yes».


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№814-12-2009 16:52:26

Elena
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 24-05-2006
Сообщений: 65
UA: Safari 4.0

Re: Подмена about:neterror

Infocatcher пишет

В консоли ошибок при этом что-нибудь пишет?

неа ничего.

contentaccessible=yes прописано.

Проблему вроде решила переписав чуток html-ку. Но вопрос все равно остался - почему в одном случае отображется корректно, а в другом стиль разъезжается...

Отсутствует

 

№914-12-2009 17:05:42

Skarm
Пытливый Лис
 
Группа: Members
Зарегистрирован: 24-11-2008
Сообщений: 196
UA: Firefox 3.5

Re: Подмена about:neterror

Elena  Возможно Вам понравиться не придумывать велосипед :rolleyes:, а установить дополнение TryAgain? https://addons.mozilla.org/en-US/firefox/addon/2462
Небольшая картинка лиса и счетчик, который будет пытаться достучать до сервака ;)
Либо воспользуйтесь исходником для TryAgain здесь http://userscripts.org/scripts/show/4125.
Удачи!


Чего–то требует душа, успев за день натрудиться.
И ночь, хозяйкой, не спеша, читает браузером страницу.

Отсутствует

 

№1014-12-2009 19:00:25

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Подмена about:neterror

почему в одном случае отображется корректно, а в другом стиль разъезжается...

Видимо, innerHTML как-то не так добавляет стили. :| там же, в общем-то, XML + xmlns="http://www.w3.org/1999/xhtml", а не HTML.

По крайней мере, вот так у меня не работает (из консоли ошибок):

Выделить код

Код:

top.opener.content.document.documentElement.innerHTML = '<head><style type="text/css"> * { color: green !important; } </style></head><body><strong>some text</strong></body>';

А вот так уже все нормально:

Выделить код

Код:

with(top.opener.content.document) {
    var de = documentElement;
    var h = createElement("head");
    var s = createElement("style");
    s.type = "text/css";
    s.appendChild(createTextNode("strong { color: green !important; }"));
    h.appendChild(s);
    var b = createElement("body");
    b.innerHTML = "<strong>some text</strong>";
    de.innerHTML = "";
    de.appendChild(h);
    de.appendChild(b);
}

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1112-01-2010 16:09:09

tpb12
Участник
 
Группа: Members
Зарегистрирован: 30-10-2009
Сообщений: 4
UA: Firefox 3.5

Re: Подмена about:neterror

Всем привет!

Вот ломаю голову над такой задачей: осуществил перехват about:neterror с помощью подмены файла neterror.xhtml (и еще двух для ошибок типа Untrusted connection) в соответствующих jar-файлах. Все вроде бы хорошо работает, не устраивает одно - не хватает прав для вызова функции через XPCOM, попытка установить права тоже ни к чему не приводят. В связи с этим у меня вопрос как сделать перехват по другому, например, через extension, или установить права.

Заранее спасибо.

Отсутствует

 

№1216-01-2010 12:15:00

Elena
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 24-05-2006
Сообщений: 65
UA: Safari 4.0

Re: Подмена about:neterror

tpb12 пишет

Всем привет!

Вот ломаю голову над такой задачей: осуществил перехват about:neterror с помощью подмены файла neterror.xhtml (и еще двух для ошибок типа Untrusted connection) в соответствующих jar-файлах. Все вроде бы хорошо работает, не устраивает одно - не хватает прав для вызова функции через XPCOM, попытка установить права тоже ни к чему не приводят. В связи с этим у меня вопрос как сделать перехват по другому, например, через extension, или установить права.

Заранее спасибо.

не уверена что правильно поняла вопрос, но я прост отлавливаю загрузку страницы, смотрю какой url загрузился в адресной строке и в зависимости от этого выполняю те или иные действия

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]