2009-06-14 12 views
24

किसी को भी मदद कर सकते हैं IE और Firefox लेकिन क्रोम में अपने काम नहीं कर में बुकमार्क जोड़ने के लिए, मैं उपयोग कर रहा हूँ के बाद और मैं अपने त्रुटि संदेश कह रही है "समर्थित नहीं" या तो ..जावास्क्रिप्ट से ब्राउजर पसंदीदा/बुकमार्क में जोड़ें लेकिन सभी ब्राउज़रों के लिए (मेरा क्रोम में काम नहीं करता है)?

किसी एक के बारे में पता नहीं मिलता है सभी ब्राउज़रों का समर्थन करने के लिए या कम से कम वापस आने के लिए अच्छी स्क्रिप्ट और मुझे यह समर्थित नहीं बताएं, मेरे पास jQuery तक पहुंच है - शायद ब्राउज़र का पता लगाने का कोई तरीका है

मैं वर्तमान में इसका उपयोग कर रहा हूं और यह आईई और फ़ायरफ़ॉक्स के लिए काम करता है लेकिन क्रोम

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'); 
} 
+0

मैं माफी चाहता हूँ .. क्या आप बुकमार्क जोड़ने के लिए उपयोगकर्ता के ब्राउज़र के लिए मजबूर करने की कोशिश कर रहे कहने के लिए क्या मतलब है? जबकि फ़ायरफ़ॉक्स या यानी एड-ऑन आपके द्वारा सुझाए गए कार्यों को कर सकता है, एक पृष्ठ पर एक नियमित स्क्रिप्ट निश्चित रूप से इस तक पहुंच नहीं होगी। –

+0

असल में, आईई विधि का व्यापक रूप से उपयोग किया जाता है (अक्सर "पसंदीदा में जोड़ें" बटन पर), यह जोड़ना संवाद खोलता है। यह एक बुरा अभ्यास है, लेकिन यह वास्तव में लोकप्रिय हो गया जब इंटरनेट शुरुआती (=> आईई पर) को पता नहीं था कि वे इसे स्वयं कर सकते हैं। –

+5

ugh .. * shudder * –

उत्तर

12

क्षमा करें, लेकिन ऐसा करने के लिए कोई क्रॉस-ब्राउज़र तरीका नहीं है। आपका एफएफ उदाहरण भी टूटा हुआ है: यह नियमित बुकमार्क नहीं बनाएगा, लेकिन साइडबार में एक बुकमार्क सेट खोला जाएगा। वास्तविक बुकमार्क बनाने के लिए आपको use the bookmark-service करना होगा, लेकिन यह सुरक्षा प्रतिबंधों के कारण विफल हो जाएगा।

+0

मुझे भी हाँ .. सोचा था कि यह एक बेवकूफ विचार था लेकिन ग्राहक चाहता है .. लेकिन यदि यह संभव नहीं है तो मुझे लगता है कि मुझे कुछ और मिल जाएगा :-) –

+6

यदि यह केवल एक बीमार सूचित ग्राहक के लिए है, तो क्यों परवाह है कि यह क्रोम में काम करता है या नहीं? –

+0

एफएफ की स्थिति में थोड़ा सुधार हुआ है: यूआई परिवर्तनों के लिए धन्यवाद, अब बुकमार्क को नियमित रूप से चिह्नित करना संभव है, लेकिन डिफ़ॉल्ट रूप से यह अभी भी साइडबार – Christoph

4

आप हमेशा सीटीआर + डी दबाए रखने के लिए ग्राहक को सतर्क कर सकते हैं। यह सभी ब्राउज़रों में सार्वभौमिक है। यह मुश्किल है, लेकिन ग्राहक के लिए उतना ही उपयोगी है।

+0

वास्तव में 9 से पहले ओपेरा संस्करणों के लिए: यह कॉन्करर पर CTRL + T है: CTRL + B.आप यह भी निर्दिष्ट कर सकते हैं कि यह 'CTRL' या 'CMD/Command' है, विन बनाम मैक। – FFish

+2

arlo: जब आप हमेशा "क्रैंक" कर सकते हैं, तो आप अपनी कार में स्टार्टर बटन क्यों जोड़ सकते हैं, जैसा कि हम हमेशा करते हैं (1 9 10 में)? –

5

मैं बस में इस स्क्रिप्ट का परीक्षण किया:

जीत

  • IE 6.0, IE 7.0, IE 8.0
  • Firefox 2.0, फ़ायरफ़ॉक्स 3.6.3
  • सफारी 3.1.2, सफारी 3.2 .3
  • ओपेरा 9.00
  • गूगल क्रोम 8,0

मैक

  • फ़ायरफ़ॉक्स 3.6.13
  • सफारी 5.0.1
  • ओपेरा 11,0
  • गूगल क्रोम 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 
        } 
    }(); 
    
+0

सिर्फ एफएफ में साइडबार बुकमार्क बनाता है, है ना? –

+3

एक बार यह लिंक मर जाता है, तो आपका जवाब बेकार होगा। कृपया इसे अपने उत्तर में जोड़ें। – Will

+0

ठीक है मैंने अभी अपना जवाब अपडेट किया है – FFish

5

की खोज के बाद - एडीसन की तरह! - तरीकों का एक समूह यह काम नहीं करता है, मैं अंत में this page पर आया जो कहता है कि जेएस के माध्यम से बुकमार्क जोड़ना क्रोम में स्पष्ट रूप से अक्षम है। दुर्भाग्यवश यह क्यों नहीं समझाता है।

अद्यतन: मैं एक बहुत उपयोगकर्ता द्वारा इस उत्तर का विस्तार करने के ...

इस समारोह सभी के लिए मेरे लिंक और बटन के लिए कहा गया था class="addbookmark" उनसे जुड़े है। जब उपयोगकर्ता एजेंट क्रोम है, मैं लिंक को अक्षम और समझाने के लिए कुछ 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="/images/bookmark.gif"></a> 
</td> 

जो है कोई सही तरह से, लेकिन ऐसा लगता है कि किसी के विकल्प काफी सीमित हैं।

jQuery का संस्करण महत्वपूर्ण नहीं है, और यह आप पर निर्भर करता है कि क्या आप स्थानीय प्रतिलिपि या google version पर हॉट-लिंक चाहते हैं। bookmark.js बिल्कुल ओपी के कोड के अनुसार काफी है:

$ 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."); 
    } 
} 

आशा उपयोगी है।

2

मुझे उपर्युक्त उदाहरण काम करने के लिए नहीं मिला। वैसे भी मूल सवाल का जवाब 'अपने क्रोम में काम नहीं कर रहा है और मैं कह मेरी त्रुटि संदेश नहीं मिलता है "समर्थित नहीं" या तो ..' लाइन

else if (window.external) { // IE 

क्रोम वास्तव में इस परीक्षण और उसके बाद से गुजरता है की वजह से है एक बुकमार्क जोड़ने के लिए उत्सुकता से विफल रहता है। मैंने इस लाइन को

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); 
} 
0

jQuery की सहायता से मेरा दृष्टिकोण।
आईई 6-8, एफएक्स 1-25, ओपेरा 7-14 में परीक्षण किया गया। क्रोम, सुरक्षित में शानदार ढंग से गिरावट आई है।

सीएसएस:

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

जे एस:

/* ... 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.'); 
} 
}); 
संबंधित मुद्दे

 संबंधित मुद्दे