После очередного обсуждения Оперных кнопок, поклонники Firefox
ругали Оперу за то, что у неё нет поддержки вставки кнопок через
адресную строку. То есть в Опере нельзя написать в адресной строке:
opera:/button/Content block mode on,,,920136405,Delete+Content block details,1
Вместо ожидаемого приглашения: "хотите добавить кнопку ...", открывается
сообщение об ошибке 8-[
В огненной лисе это решается установкой очередного расширения.
Встала задача: как настроить Оперу на поддержку такого формата
адреса. Другими словами: как внедриться в страницу с сообщением
об ошибке?
Мне было необходимо добавить на страницу свой JS.
Как Вы можете убедиться, на такую страницу не действую UserJS.
А через error.css у меня не получилось прилепить внешний JS файл.
Остаеться последний вариант: языковой файл 8-]
найдя в файле ru.lng строку
-14659052="Неверный адрес."
Я заменил её на
-14659052="Неверный адрес.<script language=javascript src='file://localhost/C:/Program files/Opera 9/styles/error.js' language='javascript'></script>"
Обратите внимание на "file:/localhost/". Без этого JS не захотел
добавляться с локальной машины.
Что же написать в этом файле error.js ?
Я сделал следующее:
Location=document.location.href;//Что написано в адресной строке
if( Location.indexOf("opera:/button/")==0 )//Проверяем, наш ли это случай
{
window.addEventListener('load',function() {
document.title="Добавление кнопки";
HTML = "<html dir=\"ltr\" lang=\"ru\"><head><title>Добавление кнопки</title><style>";
HTML += "html, head {max-width: 850px;}</style>";
HTML += "<META http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"></head>";
HTML += "<body><h1> </h1><p>Хотите ли вы добавить кнопку:</p><textarea style=\"width:100\x25;height:50px\">";
HTML += Location + "</textarea><br><center><a href=\""+Location+"\" style=\"font-size: 83%;margin: 10px 10px 0 0;\">";
HTML += "Добавить кнопку</a></center><center><a href=\"javascript:history.back(1);\" style=\"font-size: 83%;margin: 10px 10px 0 0;\">";
HTML += "<< Венуться назад</a></center></body></html>";
document.body.innerHTML = HTML;
//alert("Done!");
},false);
}
Если переменная Location начинается со слов: "opera:/button/", то скрипт
по завершении загрузки страницы генерирует в переменной HTML новое
содержимое страницы. В этом новом содержимом есть ссылка для добавления
кнопки и даже сам код кнопки. Учтите что сам файл error.js должен быть в кодировке
Unicode, потому что страница об ошибке отображатеся в такой кодировке.
Еще обратите внимание, что error.css продолжает действовать, даже после
того, как Вы измените содержимое. То есть проектируя свою собственную страницу
с сообщением об ошибке, не забудьте включить в неё error.css (хотя возможно
это решается какой-нибудь JS командой).
Надеюсь мой опыт вам поможет. Конечно можно расширить функциональность
моего примера. Но мне хватает и этого 8-]
Пишите свои идеи и предложения. Можно придумать свой формат адресной строки. Например:
opera:плагины
opera:кэш