Страницы: 1
День добрый!
Нужно подменять стандартное сообщение ff о том что сервер не доступен, которое возникает, например когда неправильно набран адрес или нет доступа в интернет.
Сейчас отлавливаю загрузку страницы и там пыталсь сделать следующиее
только вот загвоздка в том, что после загрузки стандартной формы документ имеет тип application/xhtml+xml
А тот, котоый мне надо показать text/css. поэтому такое присваивание не работает (ругается на формат моего документа).
соответственно, вижу несколько вариантов решения проблемы
1. как изменить сontentType на нужный?
2. где-то в настройках ff прописать чтобы вместо стандартной страницы about:neterror, грузилось то что мне нужно с нужным типом и уже его переоределять?
3. удалить текущий документ и на его месте создать новый с нужным текстом. не знаю как это сделать
Отсутствует
Что мешает заменить «.innerHTML=» на DOM-методы или на https://developer.mozilla.org/en/Parsin … _DOM_trees ?
3. удалить текущий документ и на его месте создать новый с нужным текстом. не знаю как это сделать
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Elena
3. удалить текущий документ и на его месте создать новый с нужным текстом. не знаю как это сделать
А я в Симанки давно уже добавил к стандартным фразам в netError.dtd свои ссылки некоторые постоянные, чтобы они чаще перед глазами оказывались.
Добавлено 12-12-2009 23:27:12
А сама страница - netError.xhtml
С ней же тоже можно поколдовать.
Я вот только кнопку обновления перемещаю снизу вверх. И расширяю её на полокна так примерно.
Отсутствует
Что мешает заменить «.innerHTML=» на DOM-методы или на https://developer.mozilla.org/en/Parsin … _DOM_trees ?
Банальное незнание как это сделать
Подскажите пожалуйста, у меня есть documentElement.innerHTML и text/css, прочитанный из файла как такую подмену корректно сделать?
Отредактировано Elena (13-12-2009 16:55:53)
Отсутствует
Эммм... не совсем понимаю, что нужно получить.
Изменить текст сообщения страницы 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)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Эммм... не совсем понимаю, что нужно получить.
Изменить текст сообщения страницы 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».
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
В консоли ошибок при этом что-нибудь пишет?
неа ничего.
contentaccessible=yes прописано.
Проблему вроде решила переписав чуток html-ку. Но вопрос все равно остался - почему в одном случае отображется корректно, а в другом стиль разъезжается...
Отсутствует
Elena Возможно Вам понравиться не придумывать велосипед , а установить дополнение 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, или установить права.
Заранее спасибо.
Отсутствует
Всем привет!
Вот ломаю голову над такой задачей: осуществил перехват about:neterror с помощью подмены файла neterror.xhtml (и еще двух для ошибок типа Untrusted connection) в соответствующих jar-файлах. Все вроде бы хорошо работает, не устраивает одно - не хватает прав для вызова функции через XPCOM, попытка установить права тоже ни к чему не приводят. В связи с этим у меня вопрос как сделать перехват по другому, например, через extension, или установить права.
Заранее спасибо.
не уверена что правильно поняла вопрос, но я прост отлавливаю загрузку страницы, смотрю какой url загрузился в адресной строке и в зависимости от этого выполняю те или иные действия
Отсутствует
Страницы: 1