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

Выделить код

Код:

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

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

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

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

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

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

Elena

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

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

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

Infocatcher пишет

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

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

Эммм... не совсем понимаю, что нужно получить.
Изменить текст сообщения страницы 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 пишет

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

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

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

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

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

Выделить код

Код:

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

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

Infocatcher пишет

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

неа ничего.

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

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

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

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

Видимо, 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);
}

Всем привет!

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

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

tpb12 пишет

Всем привет!

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

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

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