Pull to refresh

Букмарки и Javascript

Reading time2 min
Views2K
Столкнувшись с задачей, создать на сайте ссылку( или кнопку ) «Добавить в закладки», было найдено не сколько вариантов решения этой задачи. И все вроде хорошие, но каждый чем то мне не угодил.



И так было отобрано 2 варианта

Первый

function AddToFavorites(title, url) {
if (window.sidebar) { // Mozilla Firefox Bookmark
window.sidebar.addPanel(title, url,"");
return false;
}
else if( window.external ) { // IE Favorite
window.external.AddFavorite( url, title);
return false;
}
else if(window.opera && window.print) { // Opera Hotlist
var elem = document.createElement('a');
elem.setAttribute('href',url);
elem.setAttribute('title',title);
elem.setAttribute('rel','sidebar');
elem.click();
return false;
}
}


И второй

И плагин jFav1.0 под jQuery.

Грузить библиотеку jQuery с плагином, не очень хотелось, ради одной маленькой ссылки.
а первый код никак не хотел отрабатывать в Опере.

Пришлось включить мозг:
в IE сущестувет window.external.AddFavorite( url, title); — тут все просто
в FF window.sidebar.addPanel(title, url,""); — тоже просто
в Operе добавлялась при помощи плагина jFav1.0
поковырявшись в коде этого плагина, я понял (спасибо создателям jFav1.0 ), что для Оперы не надо никакого скрипта, достаточно простой ссылки add this page to bookmark
с атрибутом rel=«sidebar» .
«Микроформаты» — подумал я, вот какая от вас польза.

FF любимый, меня тоже не подвёл, по клику на такую ссылку, открывает окошко «Добавить в закладки».

Сафари и Хром оказались не пределах, спокойно переходили страницу указанную в ссылке.


Для них я не нашёл хорошего решения, пришлось остановится на банальном alert('Pls, press Ctrl + D or CMD + D for MAC, \n to add this page to your bookmarks.');

В результате получился такой код:
// JS
function bookmark(a){
if (window.sidebar){ // firefox
return false;
}
else if(window.opera && window.print){ // opera
return false;
}
else if(document.all){ // ie
window.external.AddFavorite(a.href2 || a.href, a.title);
if(!a.href2){
a.href2 = a.href;
a.href="#";
}
} else {
alert('Pls, press Ctrl + D or CMD + D for MAC, \n to add this page to your bookmarks.');
a.href=+"#";
return false;
}
}
//HTML

<a href="http://yoursite/" rel="sidebar" onclick="bookmark(this)" title="My JS Bookmarks" > add this page to bookmark </a>


Рабочий пример

Остался открытым вопрос Сафари и Хрома,
может у кого то есть элегантное решение для них?

Код тестировался под Windows PX — FF3.5.4, Opera 10.01. IE6-8, Safary 3.2.1, Chrome 3.0.195.27
Tags:
Hubs:
Total votes 12: ↑8 and ↓4+4
Comments19

Articles