2008-09-17 3 views
15

शीर्षक के अनुसार, मुझे Google क्रोम का पता लगाने के लिए एक सुरक्षित सुविधा-आधारित (यानी, नेविगेटर.एपनाम या नेविगेटर.एपवर्जनन का उपयोग किए बिना) ढूंढने में दिलचस्पी होगी।जावास्क्रिप्ट के साथ Google क्रोम का पता लगाने के लिए सुरक्षित सुविधा-आधारित तरीका?

तक सुविधा आधारित मेरा मतलब है, उदाहरण के लिए:

if(window.ActiveXObject) { 
    // internet explorer! 
} 

संपादित करें: के रूप में यह बताया गया है, सवाल ज्यादा मतलब नहीं है (जाहिर है अगर आप एक सुविधा को लागू करना चाहते हैं, तो आप इसके लिए परीक्षण करें, यदि आप किसी विशिष्ट ब्राउज़र के लिए पता लगाना चाहते हैं, तो आप उपयोगकर्ता एजेंट की जांच करें), क्षमा करें, यह 5 बजे है;) मुझे इसे इस तरह वाक्यांश दें: क्या कोई जावास्क्रिप्ट ऑब्जेक्ट्स और/या विशेषताएं हैं जो क्रोम के लिए अद्वितीय हैं। ..

+1

क्यों (window.opera & & navigator.taintEnable & & document.evaluate & & navigator.product = 'छिपकली'!!)? निश्चित रूप से यदि आप फीचर द्वारा जांच कर रहे हैं तो इससे कोई फ़र्क नहीं पड़ता कि यह कौन सा ब्राउज़र है, यह महत्वपूर्ण है कि यह किस सुविधा का समर्थन करता है। – SCdF

+0

मैं सहमत हूं .. आपको ऐसा करने की आवश्यकता क्यों है? यह मेरे लिए एक बुरा विचार प्रतीत होता है जब तक कि आकर्षक कारण नहीं हैं, क्या आप समझा सकते हैं? –

+0

जैसा कि मैंने कहा, मैंने ज्यादातर जिज्ञासा से पूछा ... मैंने "सुरक्षित" भाग पर बहुत जोर दिया है, मुझे लगता है :), पूछने का एक और तरीका होगा: क्रोम के लिए अद्वितीय कोई भी जावास्क्रिप्ट ऑब्जेक्ट्स या फीचर्स? – jeannicolas

उत्तर

29
isChrome = function() { 
    return Boolean(window.chrome); 
} 
+1

तुम मुझे चेतावनी 'की तरह एक उदाहरण के उपयोग दिखाया जा सका' 'में आपका स्वागत है क्रोम उपयोगकर्ता!' यदि उनका ब्राउज़र क्रोम –

+0

है तो यह सिर्फ मुझे है, या यह बस काम नहीं करता है? (के रूप में: 1/14/2014) – VoidKing

+1

मैंने अभी सत्यापित किया है कि सबसे ऊपर रिलीज़ के लिए भी क्रॉम फ़ंक्शन काम करता है। (क्रोम में अपने जे एस कंसोल खोलें। टाइप करें "बूलियन (window.chrome)"। आप "सही" देखना चाहिए। अन्य ब्राउज़रों में यह कोशिश करो और आप "गलत" देखना चाहिए।) – pcorcoran

4

प्रश्न का बिल्कुल जवाब नहीं है ... लेकिन यदि आप एक विशिष्ट ब्राउज़र ब्रांड का पता लगाने की कोशिश कर रहे हैं, तो बिंदु फीचर-चेकिंग की तरह खो गई है। मुझे संदेह है कि कोई अन्य ब्राउज़र Chrome userAgent स्ट्रिंग का उपयोग कर रहा है, इसलिए यदि आपका प्रश्न 'यह ब्राउज़र क्रोम' है, तो आपको बस इसे देखना चाहिए। (वैसे, window.ActiveXObject आईई की गारंटी नहीं देता है, अन्य ऑब्जेक्ट्स के लिए प्लग-इन हैं जो इस ऑब्जेक्ट को प्रदान करते हैं। किस बिंदु को मैं बनाने की कोशिश कर रहा था।)

+0

आप बिल्कुल सही हैं! :) मुझे लगता है कि मैं क्या पूछना चाहिए है: वहाँ रहे हैं किसी भी जे एस वस्तुओं है कि क्रोम के लिए अद्वितीय हैं ... बस जिज्ञासा से बाहर पूछ वास्तव में ... – jeannicolas

1

तो, यदि आप Marijn के बिंदु को स्वीकार करते हैं

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

(क्रेडिट करने के लिए: http://davidwalsh.name/detecting-google-chrome-javascript)


यहाँ एक है और जावास्क्रिप्ट के माध्यम से उपयोगकर्ता एजेंट स्ट्रिंग परीक्षण में रुचि रखते हैं वास्तव में अच्छा विश्लेषण/chrome में उपयोगकर्ता एजेंट स्ट्रिंग के टूटने: http://www.simonwhatley.co.uk/whats-in-google-chromes-user-agent-string

0

आप विशेष रूप से क्रोम नहीं पता लगाने की जानी चाहिए। यदि कुछ भी हो, तो आपको वेबकिट का पता लगाना चाहिए, जहां तक ​​पेज प्रतिपादन का संबंध है, क्रोम को अन्य वेबकिट ब्राउज़र (सफारी, एपिफेनी) की तरह व्यवहार करना चाहिए। http://trac.webkit.org/wiki/DetectingWebKit

लेकिन फिर से, के रूप में अन्य लोगों के ऊपर कहा, तुम ब्राउज़रों का पता लगाने के नहीं करना चाहिए, आप:

आप न केवल वेबकिट पता लगाने के लिए, लेकिन यह भी वास्तव में क्या संस्करण का उपयोग किया जा रहा है यह पता लगाने की जरूरत है, इस लिंक को देख सुविधाओं का पता लगाना चाहिए। इस एडीसी आलेख को और अधिक के लिए देखें: http://developer.apple.com/internet/webcontent/objectdetection.html

0

ब्राउज़र के बारे में आपको एक कारण जानने की आवश्यकता हो सकती है क्रोम इसलिए है क्योंकि यह बहुत ही मानक मानकों का अनुपालन करता है। मैं पहले से ही पुराने जावास्क्रिप्ट कोड के साथ समस्याओं में भाग चुका हूं, जो मैंने सोचा था कि मानक मानकों (एफएफ या ओपेरा मानकों द्वारा - जो बहुत अच्छे हैं), लेकिन क्रोम और भी picky था। इसने मुझे कुछ कोड दोबारा लिखने के लिए मजबूर कर दिया, लेकिन कभी-कभी इसे चलाने के लिए if (isChrome) {blah ... blah) चाल का उपयोग करना आसान हो सकता है। क्रोम बहुत अच्छी तरह से काम करता प्रतीत होता है (मैं मानक अनुपालन के लिए हूं), लेकिन कभी-कभी आपको यह जानने की जरूरत है कि उपयोगकर्ता गंभीर विवरण में क्या चल रहा है।

इसके अलावा, क्रोम बहुत तेज़ है। समस्या यह है कि, कुछ जावास्क्रिप्ट कोड अनजाने में अन्य ब्राउज़रों की धीमी गति से काम करने के लिए निर्भर करता है, यानी: पृष्ठ लोडिंग, आईफ्रेम लोडिंग, स्टाइलशीट लिंक की नियुक्ति और पेज हेड में जावास्क्रिप्ट लिंक इत्यादि। इससे नई समस्याएं हो सकती हैं जब फ़ंक्शन वास्तव में उपलब्ध होते हैं पृष्ठ तत्वों के साथ बातचीत करने के लिए। तो अभी के लिए, आपको वास्तव में जानने की आवश्यकता हो सकती है ...

+0

ओपेरा और सफारी क्रोम की तुलना में बेहतर मानक जेएस समर्थन है। देखें: http://sputnik.googlelabs.com/ – Savageman

3

सभी मानकों के लिए nazis ...कभी-कभी आप रक्तस्राव "मानक प्रौद्योगिकियों" का उपयोग करना चाह सकते हैं जो अभी तक मानक नहीं हैं लेकिन वे ... जैसे सीएसएस 3 फीचर्स होंगे।

यही कारण है कि मुझे यह पृष्ठ क्यों मिला।

किसी कारण से, सफारी बॉक्स-छाया के साथ सीमा-त्रिज्या का एक कॉम्बो चलाता है, लेकिन क्रोम संयोजन को सही ढंग से प्रस्तुत नहीं करता है। इसलिए यह क्रोम का पता लगाने का एक तरीका ढूंढना अच्छा लगेगा, भले ही यह संयोजन को अक्षम करने के लिए वेबकिट है।

मैं जो आम तौर पर क्योंकि मुझे क्या करना बड़ा बुराई द्वारा समर्थित नहीं है चाहता हूँ एक शांत सुविधा के लिए एक विचार को खत्म करने में समाप्त होता है एक विशिष्ट ब्राउज़र/संस्करण का पता लगाने के कारणों के सैकड़ों में भाग लिया है ...

लेकिन कभी-कभी, कुछ सुविधाएं उन्हें उपयोग करने के लिए बहुत ही अच्छी होती हैं, भले ही वे अभी तक मानकीकृत न हों।

0

मैं प्रत्येक ब्राउज़र के लिए बुकमार्क बनाने के (या वेबकिट के लिए एक संदेश प्रदर्शित) को

 
if (window.sidebar) { 
// Mozilla Firefox Bookmark 
window.sidebar.addPanel(title, url,""); 
} else if(window.external) { // IE Favorite 
    if(window.ActiveXObject) { 
    //ie 
    window.external.AddFavorite(url, title); 
    } else { 
    //chrome 
    alert('Press ctrl+D to bookmark (Command+D for macs) after you click Ok'); 
    } 
} else if(window.opera && window.print) { 
// Opera 
    return true; } 
else { //safri 
alert('Press ctrl+D to bookmark (Command+D for macs) after you click Ok'); } 

8

इस उत्तर बहुत पुरानी हो चुकी है इस कोड का उपयोग, लेकिन यह पाषाण युग में वापस आ गया तो बहुत ही प्रासंगिक था।

मुझे लगता है कि फीचर डिटेक्ट नेविगेटर.यूसर एजेन्ट पार्सिंग की तुलना में अधिक उपयोगी है, क्योंकि मैंने ओपेरा अस्पष्टता here पर गुगल किया था। कोई भी नहीं जानता कि आईई 16/MSIE 16.0;/regexp को पार्स करेगा - लेकिन हम पूरी तरह से सुनिश्चित हो सकते हैं, दस्तावेज़ होगा। सभी समर्थन। वास्तविक जीवन में, विशेषताएं आम तौर पर ब्राउज़र के लिए समानार्थक हैं, जैसे: "कोई XMLHttpRequest नहीं है? यह f .... d IE6 है!" कोई गैर-आईई ब्राउज़र document.all का समर्थन करता है, लेकिन मैक्सथन जैसे कुछ ब्राउज़र उपयोगकर्ता को स्कैम्बल कर सकते हैं। (बेशक स्क्रिप्ट फ़ायरफ़ॉक्स में किसी कारण से दस्तावेज़ को परिभाषित कर सकती है, लेकिन यह आसानी से नियंत्रित है।) इसलिए मैं इस समाधान का सुझाव देता हूं।

संपादित करेंHere मुझे पूरा संसाधन मिला।

संपादित करें 2 मैंने उस दस्तावेज़ का परीक्षण किया है। यह ओपेरा द्वारा भी समर्थित है!

var is = { 
    ff: window.globalStorage, 
    ie: document.all && !window.opera, 
    ie6: !window.XMLHttpRequest, 
    ie7: document.all && window.XMLHttpRequest && !XDomainRequest && !window.opera, 
    ie8: document.documentMode==8, 
    opera: Boolean(window.opera), 
    chrome: Boolean(window.chrome), 
    safari: window.getComputedStyle && !window.globalStorage && !window.opera 
} 

का उपयोग करना आसान है:

if(is.ie6) { ... } 
+3

यह कह रही है की तरह है: आप सुनहरे बाल, और सफेद दांत मिल गया है? आपको ब्रैड पिट होना चाहिए ... – galambalazs

+1

आपका क्या मतलब है ओएमजी नहीं? यह वास्तव में विशेषता का पता लगाने के बारे में है। –

1

मैं अक्सर व्यवहार/क्षमता का पता लगाने का उपयोग करें। ब्राउज़र के नाम (उपयोगकर्ता-एजेंट) के आधार पर इसके आसपास काम करने की बजाय, इसके आसपास काम करने से पहले ब्राउजर सीधे कार्यक्षमता का समर्थन करता है या नहीं।

ब्राउज़र-विशिष्ट वर्कअराउंड के साथ एक समस्या, क्या आपको नहीं पता कि बग ठीक हो गया है या यदि सुविधा अब समर्थित है। जब आप क्षमता का पता लगाते हैं, तो आप जानते हैं ब्राउज़र ब्राउज़र का समर्थन करता है या इसका समर्थन नहीं करता है, और आप केवल ब्राउज़र-आईटी नहीं हैं।

http://diveintohtml5.ep.io/everything.html

0

isIE: !! (window.addEventListener & & window.ActiveXObject!),

isIE6:। Typeof document.createElement ('DIV') style.maxHeight == "अपरिभाषित",

isIE7: !! (! विंडो।! AddEventListener & & window.XMLHttpRequest & & document.querySelectorAll),

isIE8: !! (window.addEventListener & & document.querySelectorAll & & document.documentMode == 8),

isGecko: नाविक। उत्पाद == 'छिपकली',

isOpera: !! window.opera,

isChrome: !! window.chrome,

isWebkit: !!,

+1

FYI करें, 'isIE' अब कि IE9' window.addEventListener' का समर्थन करता है काम नहीं करता। आईई के लिए एक टिकाऊ जांच आईई के प्रत्येक नए संस्करण को तोड़ना नहीं चाहिए। – jfriend00

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