从JavaScript添加到浏览器collections夹/书签,但对于所有浏览器(我的Chrome不起作用)?

任何人都可以帮助,我使用以下添加书签到IE和Firefox,但它不在Chrome中工作,我不会得到我的错误消息说“不支持”或者..

任何人都知道一个好的脚本来支持所有的浏览器或至less回来告诉我它不支持,我有权访问jQuery – 也许有一些方法来检测浏览器

我目前使用这个,它适用于IE和Firefox,但不是铬

if (window.sidebar) { // Mozilla Firefox window.sidebar.addPanel(name, url, ""); } else if (window.external) { // IE window.external.AddFavorite(url, name); } else if (window.opera && window.print) { window.external.AddFavorite(url, name); } else { alert('not supported'); } 

对不起,但没有跨浏览器的方式来做到这一点。 你的FF例子也坏了:它不会创build一个普通的书签,而是一个设置为在侧栏中打开的书签。 您必须使用书签服务来创build实际的书签,但是由于安全限制,这将会失败。

发现后 – 像爱迪生! – 这很多方法不起作用,我最终遇到了这个页面 ,说通过JS添加书签在Chrome中显式禁用。 不幸的是,这并不能解释原因。

更新:我被要求扩大这个由另一个SO用户的答案…

我的链接和button为这个function都有一个class="addbookmark"与他们相关联。 当用户代理是Chrome时,我使用一些jQuery来禁用链接并解释原因:

 <script type="text/javascript" src="/scripts/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="/scripts/bookmark.js"></script> <script> title='A Label for this Bookmark, ie title of this page'; // for example, not really generated this way... $jQuery(document).ready(function(){ // chrome does not permit addToFavorites() function by design if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) { $('.addbookmark').attr({ title: 'This function is not available in Google Chrome. Click the star symbol at the end of the address-bar or hit Ctrl-D to create a bookmark.', href: 'javascript:return false' }) .css({opacity: .25}); // dim the button/link } }); </script> 

然后在页面的其他地方:

  <td rowspan="2" class="noprint" style="width:24px;"> <a class="addbookmark" title="Save a Bookmark for this page" href="javascript:addToFavorites(location.href,title)"> <img style="width:24px; height:24px; padding-top:2px;" src="http://img.dovov.combookmark.gif"></a> </td> 

这并不是完美的,但似乎一个select是相当有限的。

jQuery的版本并不重要,不pipe你想要本地拷贝还是热门链接到谷歌版本 ,都取决于你。 bookmark.js与OP的代码非常相似:

 $ cat /scripts/bookmark.js /* simple cross-browser script for adding a bookmark source: http://stackoverflow.com/questions/992844/add-to-browser-favourites-bookmarks-from-javascript-but-for-all-browsers-mine-do */ function addToFavorites(url, name) { if (window.sidebar) { // Mozilla Firefox window.sidebar.addPanel(name, url, ""); } else if (window.external) { // IE window.external.AddFavorite(url, name); } else if (window.opera && window.print) { window.external.AddFavorite(url, name); } else { alert("Sorry! Your browser doesn't appear to support this function."); } } 

希望这是有用的。

我刚刚testing了这个脚本:

赢得

  • IE 6.0,IE 7.0,IE 8.0
  • Firefox 2.0,Firefox 3.6.3
  • Safari 3.1.2,Safari 3.2.3
  • 歌剧9.00
  • Google Chrome 8.0

苹果电脑

  • Firefox 3.6.13
  • Safari 5.0.1
  • Opera 11.0
  • Google Chrome 8.0

     /* * Copyright 2010 by GlamThumbs Team. * * How To Use The Script: * add to your page this code between inside head tags * <script type="text/javascript" src="ATBookmarkApp.js"></script> * add anchor with void href like this: * <a href="javascript:void(0)" onClick="return BookmarkApp.addBookmark(this)">bookmark us</a> * */ ATBookmarkApp = function () { var isIEmac = false; /*@cc_on @if(@_jscript&&!(@_win32||@_win16)&& (@_jscript_version<5.5)) isIEmac=true; @end @*/ var isMSIE = (-[1,]) ? false : true; var cjTitle = document.title; var cjHref = location.href; 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 || isIEmac || isMac) { str = (isMac ? 'Command/Cmd' : 'CTRL') + ' + D'; // Netscape, Safari, iCab, IE5/Mac } return ((str) ? 'Press ' + str + ' to bookmark this page.' : str); } function isIE8() { var rv = -1; if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) { rv = parseFloat(RegExp.$1); } } if (rv > - 1) { if (rv >= 8.0) { return true; } } return false; } function addBookmark(a) { try { if (typeof a == "object" && a.tagName.toLowerCase() == "a") { a.style.cursor = 'pointer'; if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) { window.sidebar.addPanel(cjTitle, cjHref, ""); // Gecko return false; } else if (isMSIE && typeof window.external == "object") { if (isIE8()) { window.external.AddToFavoritesBar(cjHref, cjTitle); // IE 8 } else { window.external.AddFavorite(cjHref, cjTitle); // IE <=7 } return false; } else if (window.opera) { a.href = cjHref; a.title = cjTitle; a.rel = 'sidebar'; // Opera 7+ return true; } else { alert(hotKeys()); } } else { throw "Error occured.\r\nNote, only A tagname is allowed!"; } } catch (err) { alert(err); } } return { addBookmark : addBookmark } }(); 

您可以随时提醒客户按ctr + D。 这在所有浏览器中都是通用的。 这很俗气,但对客户有用。

我不能得到上面的例子工作。 无论如何,原来的问题的答案“它不在CHROME中工作,我不会得到我的错误信息说:”不支持“或者..”是由于行

 else if (window.external) { // IE 

铬实际上通过这个testing,然后有意无法添加书签。 我改变了这一行

 else if(window.external && !window.chrome) // IE 

现在你得到“不支持”的消息。 我实际上删除了这个消息,并调用函数hotKeys()来获得更有意义的警报。 我不得不做一些改变,以使其工作

 function showHotKeys() { 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 } return ((str) ? 'Press ' + str + ' to bookmark this page.' : str); } 

我的方法与jQuery的帮助。
testingIE 6-8,Fx 1-25,Opera 7-14。 Saf,Saf优雅地降级。

CSS:

 .no-js .link-bookmark { display: none; } 

JS:

 /* ... Bookmark current page ... */ var $favLink = $('.link-bookmark'); if ( window.sidebar || 'AddFavorite' in window.external || window.opera ) { $favLink.show(); } // add a 'rel' attrib if Op 7+ && Fx >= 23 if ( window.opera || window.sidebar ) { var $favLinkAttrRel = $favLink.attr('rel'); if ( typeof $favLinkAttrRel !== "undefined" && $favLinkAttrRel !== false ) { // don't overwrite the rel attr if already set $favLink.attr('rel', 'sidebar'); } } $favLink.click(function( event ) { //event.preventDefault(); // prevent the anchor tag from sending the user off to the link var url = this.href; var $title = $('title').text(); // IE Favorite if ( 'AddFavorite' in window.external ) { event.preventDefault(); window.external.AddFavorite(url, $title); } // Fx <23 Bookmark, 'addPanel' not available from v23 on any more. else if ( 'addPanel' in window.sidebar ) { event.preventDefault(); window.sidebar.addPanel($title, url, ''); } // Op 7+ && Fx >= 23 else if ( window.opera || window.sidebar ) { $favLink.attr('title', $title); return true; // do nothing - the rel="sidebar" should do the trick } // for Saf, Konq etc - browsers who do not support bookmarking scripts else { event.preventDefault(); alert('Your browser doesn\'t support the bookmark functionality,' + 'please add this page to your bookmarks manually.'); } });