添加收藏夹的功能,各个浏览器的接口不一样,所以需要分别对待,而对于chrom和webkit内核的浏览器就没有提供任何添加的功能,所以不得不提示用户通过按热键来做添加收藏的操作。
function hotKeys() { var ua = navigator.userAgent.toLowerCase(); var str = ''; var isWebkit = (ua.indexOf('webkit') != - 1); var isMac = (ua.indexOf('mac') != - 1); if (ua.indexOf('konqueror') != - 1) { str = 'CTRL + B'; // Konqueror } else if (window.home || isWebkit || isMac) { str = (isMac ? 'Command/Cmd' : 'CTRL') + ' + D'; // Netscape, Safari, iCab, IE5/Mac } return ((str) ? '按 ' + str + '添加收藏.' : str); } function addToFavorites(a,title,url) { title = title || document.title; url = url || location.href; if (window.sidebar) // Firefox window.sidebar.addPanel(title, url, ''); else if(window.opera && window.print) // Opera { var elem = document.createElement('a'); elem.setAttribute('href',url); elem.setAttribute('title',title); elem.setAttribute('rel','sidebar'); // required to work in opera 7+ elem.click(); } else if(document.all) // IE window.external.AddFavorite(url, title); else { alert(hotKeys()); } }
第一个js函数获得chrom和mac下浏览器添加收藏的热键,第二段代码处理ie,firefox,opera的添加收藏。
如下是一个完整的例子,您可以试试运行。请注意有某些浏览器比如Chrom和ie9会出于安全考虑拒绝执行试试运行中的脚本,就需要复制代码再运行了。
<!doctype html> <html> <head> <script> function hotKeys() { var ua = navigator.userAgent.toLowerCase(); var str = ''; var isWebkit = (ua.indexOf('webkit') != - 1); var isMac = (ua.indexOf('mac') != - 1); if (ua.indexOf('konqueror') != - 1) { str = 'CTRL + B'; // Konqueror } else if (window.home || isWebkit || isMac) { str = (isMac ? 'Command/Cmd' : 'CTRL') + ' + D'; // Netscape, Safari, iCab, IE5/Mac } return ((str) ? '按 ' + str + '添加收藏.' : str); } function addToFavorites(a,title,url) { title = title || document.title; url = url || location.href; if (window.sidebar) // Firefox window.sidebar.addPanel(title, url, ''); else if(window.opera && window.print) // Opera { var elem = document.createElement('a'); elem.setAttribute('href',url); elem.setAttribute('title',title); elem.setAttribute('rel','sidebar'); // required to work in opera 7+ elem.click(); } else if(document.all) // IE window.external.AddFavorite(url, title); else { alert(hotKeys()); } } </script> </head> <body> <a href="#" onclick="addToFavorites(this,'OutOfMemory.CN','http://outofmemory.cn/')">添加收藏</a> <p>按上面的地址可以将内存溢出 OutOfMemory.CN添加到收藏夹。</p> </body> </html>