/* 03.09.2005 */
Кроссбраузерные закладки
Осмотримся по отдельности
В этой статье я расскажу, как добавить ссылку/закладку на свой сайт в браузер пользователя (IE, Gecko/ Mozilla/ Firefox/Netscape 6+, Opera 6+).
Internet Explorer начиная с версии 4 предоставляет возможность добавлять закладки в избранное (Favorites) через скрипт, используя метод AddFavorite объекта window. external. При вызове метода AddFavorite отображается окно диалога такое же, как и при выборе пункта меню "Favorites -> Add to Favorites…".
Синтаксис метода AddFavorite:
external.AddFavorite(sURL [, sTitle])
где обязательный параметр sURL это - строка содержащая URL добавляемой в избранное закладки, а необязательный параметр sTitle, определяет текст-заголовок закладки в списке избранного. Пользователь может изменять данный текст в диалоговом окне "Add Favorite".
Метод не возвращает никакого значения.
Пример: Добавить в избранное
function AddFavorite(url, title)
{
if (typeof window.external == "object")
{
window.external.AddFavorite(url, title);
return true;
}
else return false;
}
...
<a href="javascript: void(AddFavorite(location.href, document.title) || alert('Пример работает только в IE4+'))">Добавить в избранное</a>
Браузеры построенные на ядре Gecko предоставляют, так называемую, "боковую панель" (Sidebar), в которую можно добавлять собственные вкладки (своего рода интерактивные закладки) из скрипта с разрешения пользователя. Однако, закладки добавленные в Sidebar будут открываться по умолчанию именно в боковой панели, а не в основной части окна браузера. Чтобы закладка открывалась как обычно, в основной части окна, пользователю придется самостоятельно убрать галочку в соответствующем поле в окне свойств закладки.
Собственные вкладки могут быть сделаны с помощью HTML или XUL и добавлены в боковую панель браузера с помощью метода addPanel объекта window.sidebar.
Синтаксис метода addPanel:
window.sidebar.addPanel (aTitle, aContentURL, aCustomizeURL)
где aTitle заголовок под которым появляется вкладка, aContentURL – URL для загрузки вкладки и необязательный параметр aCustomizeURL, точный смысл которого (на данный момент) скрыт за семью замками, но о нем сказано, что это ссылка для кастомизации вкладки.
Пример: Добавить закладку в Sidebar
function AddSidebarBookmark (url, title)
{
if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function"))
{
window.sidebar.addPanel (title, url, "");
return true;
}
else return false;
}
...
<a href="javascript: void(AddSidebarBookmark(location.href, document.title) || alert('Ваш браузер не поддерживает Sidebar-закладки.'))">Добавить закладку в Sidebar</a>
Также установить закладку можно с помощью ссылки с установленным атрибутом rel="sidebar":
<a href="url" title="title" rel="sidebar"> Bookmark page </a>
где url – задает URL, а title определяет заголовок закладки.
Пример: Добавить закладку в Sidebar
Начнем с того, что Opera не предоставляет средств для добавления закладок из скрипта, а требует формирования ссылок с установленным атрибутом rel="sidebar", так же как это было показано для Gecko. При этом в версиях Opera 6.x закладки добавлялись в виде отдельной панели в "Hotlist", при этом в в "Bookmarks" закладки не попадали. Соответственно, страница отображалась не в основной части окна, а на панели (правда "Hotlist" можно было сделать плавающим и развернуть на все окно). Но начиная с Opera 7 закладки стали добавляться в "Bookmarks", а при помеченом поле "Show in panel" в окне диалога "Add bookmark" и на боковую панель (а "Show in panel" отмечено по умолчанию при использовании ссылки с rel="sidebar") . Если пользователь использует закладку в Bookmarks, то страница отображаться в основной части окна, если же пользователь использует боковую панель, то страница появляется на отдельной боковой панели.
Замечание: Ссылка с атрибутом rel="sidebar" будет работать также и в Opera 5.11 + при соответствующих настройках файлов конфигурации.
Собираем все вместе...
function addBookmark(url, title)
{
if (!url) url = location.href;
if (!title) title = document.title;
//Gecko
if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) window.sidebar.addPanel (title, url, "");
//IE4+
else if (typeof window.external == "object") window.external.AddFavorite(url, title);
//Opera7+
else if (window.opera && document.createElement)
{
var a = document.createElement('A');
if (!a) return false; //IF Opera 6
a.setAttribute('rel','sidebar');
a.setAttribute('href',url);
a.setAttribute('title',title);
a.click();
}
else return false;
return true;
}
...
<a href="javascript: void(addBookmark() || alert('Ваш браузер не поддерживает автоматическое добавление закладок.'))"> Bookmark page</a>
Пример: Bookmark page
Итоги
И что же мы имеем. Функция addBookmark добавляет закладку в IE4+, Gecko и Opera7+ и это хорошо. При выборе закладки в IE -> Favorites и Opera -> Bookmarks, страница отображается в основной части окна браузера, однако в Gecko страница открывается в боковой панели - это плохо.