अगर ब्राउज़र है तो जाँच करने के लिए मुझे बूलियन मान लौटाने वाले कुछ फ़ंक्शन की आवश्यकता है क्रोम ।
मैं ऐसी कार्यक्षमता कैसे बनाऊं?
अगर ब्राउज़र है तो जाँच करने के लिए मुझे बूलियन मान लौटाने वाले कुछ फ़ंक्शन की आवश्यकता है क्रोम ।
मैं ऐसी कार्यक्षमता कैसे बनाऊं?
जवाबों:
अद्यतन: कृपया इसे संभालने के लिए अद्यतन तरीके के लिए जोनाथन का जवाब देखें । नीचे दिया गया उत्तर अभी भी काम कर सकता है, लेकिन यह अन्य ब्राउज़रों में कुछ गलत सकारात्मक ट्रिगर कर सकता है।
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
हालांकि, जैसा कि उल्लेख किया गया है कि उपयोगकर्ता एजेंट खराब हो सकते हैं, इसलिए इन मुद्दों को संभालते समय फीचर-डिटेक्शन (जैसे मॉर्डनाइज़र ) का उपयोग करना हमेशा सबसे अच्छा होता है , जैसा कि अन्य जवाबों में उल्लेख किया गया है।
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
है navigator.vendor
, इसलिए यह विधि बुलेटप्रूफ नहीं है, ऐसा कुछ /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
संभवत: बेहतर काम करेगा
यह देखने के लिए कि ब्राउज़र Google Chrome है या नहीं , इसका प्रयास करें:
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// but needs to check if window.opr is not undefined
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
var isChromium = window.chrome;
var winNav = window.navigator;
var vendorName = winNav.vendor;
var isOpera = typeof window.opr !== "undefined";
var isIEedge = winNav.userAgent.indexOf("Edge") > -1;
var isIOSChrome = winNav.userAgent.match("CriOS");
if (isIOSChrome) {
// is Google Chrome on IOS
} else if(
isChromium !== null &&
typeof isChromium !== "undefined" &&
vendorName === "Google Inc." &&
isOpera === false &&
isIEedge === false
) {
// is Google Chrome
} else {
// not Google Chrome
}
उपयोग का उदाहरण: http://codepen.io/jonathan/pen/WpQELR
यह काम करता है क्योंकि यदि आप Google Chrome इंस्पेक्टर का उपयोग करते हैं और कंसोल टैब पर जाते हैं। 'विंडो' टाइप करें और एंटर दबाएँ। तब आप 'विंडो ऑब्जेक्ट' के लिए DOM प्रॉपर्टीज़ देख सकते हैं। जब आप ऑब्जेक्ट को ढहाते हैं तो आप 'क्रोम' संपत्ति सहित सभी गुण देख सकते हैं।
आप IE के लिए जाँच करने के लिए कड़ाई से सच के बराबर उपयोग नहीं कर सकते window.chrome
। आईई undefined
लौटती थी, अब लौटती है true
। लेकिन लगता है क्या, IE11 अब फिर से अपरिभाषित लौटता है। IE11 भी के ""
लिए एक खाली स्ट्रिंग देता है window.navigator.vendor
।
आशा है कि ये आपकी मदद करेगा!
अपडेट करें:
नीचे इंगित करने के लिए Halcyon991 के लिए धन्यवाद , कि नया ओपेरा 18+ भी सच के लिए आउटपुट देता है window.chrome
। ओपेरा 18 जैसा दिखता क्रोमियम 31 पर आधारित है । इसलिए मैंने यह सुनिश्चित करने के लिए एक चेक जोड़ा window.navigator.vendor
: "Google Inc"
और नहीं है "Opera Software ASA"
। इसके अलावा, रिंग और एड्रियन के लिए धन्यवाद क्रोम 33 के बारे में प्रमुखों के लिए अब सच नहीं लौट रहा है ... window.chrome
अब जांचता है कि क्या अशक्त नहीं है। लेकिन IE11 के लिए करीब ध्यान दें, मैंने IE11 के लिए चेक वापस जोड़ा undefined
क्योंकि अब undefined
यह आउटपुट करता है , जब यह पहली बार रिलीज हुआ था .. तब कुछ अपडेट के बाद इसे आउटपुट किया गया था true
.. अब हालिया अपडेट बिल्ड undefined
फिर से आउटपुट कर रहा है। Microsoft यह मन नहीं बना सकता है!
UPDATE 7/24/2015 - ओपेरा चेक के लिए इसके अलावा
ओपेरा 30 अभी रिलीज हुई थी। यह अब आउटपुट नहीं है window.opera
। और window.chrome
नए ओपेरा 30 में भी सही होने के लिए आउटपुट। इसलिए आपको यह जांचना होगा कि OPR उपयोगकर्ता में है या नहीं । मैंने ओपेरा 30 में इस नए बदलाव के लिए अपनी स्थिति को ऊपर से अपडेट किया, क्योंकि यह Google Chrome के समान रेंडर इंजन का उपयोग करता है।
अद्यतन 10/13/2015 - IE जांच के लिए इसके अलावा
कारण यह outputting के लिए आईई एज के लिए चेक जोड़ी true
के लिए window.chrome
भले ही IE11 आउटपुट .. undefined
के लिए window.chrome
। इस बारे में हमें बताने के लिए आर्टफुलहैकर का धन्यवाद !
अद्यतन 2/5/2016 - आईओएस क्रोम की जाँच के लिए इसके अलावा
IOS पर क्रोम CriOS
के लिए आउटपुट true
देने के कारण iOS क्रोम चेक के लिए जोड़ा गया चेक । हमें इस बारे में बताने के लिए xinthose का धन्यवाद !
UPDATE 4/18/2018 - ओपेरा चेक के लिए परिवर्तन
ओपेरा के लिए संपादित चेक, जाँच अब से window.opr
नहीं है undefined
क्योंकि Chrome 66 में OPR
है window.navigator.vendor
। इस रिपोर्ट के लिए फ्रॉस्टी जेड और डैनियल वालेमैन का धन्यवाद !
Mozilla/5.0 (Linux; Android 8.0.0; ASUS_Z012D Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36
इसलिए isChrome()
रिटर्न झूठी ।
window.opr
न हो undefined
।
एक बहुत ही सरल समाधान सिर्फ उपयोग करने के लिए है:
var isChrome = !!window.chrome;
!!
बस एक बूलियन मान को वस्तु बदल देता है। गैर-क्रोम ब्राउज़रों में, यह संपत्ति होगी undefined
, जो सत्य नहीं है।
ध्यान दें कि यह एज के संस्करणों के लिए भी सच है जो क्रोम पर आधारित हैं (धन्यवाद @ इसको इंगित करने के लिए)।
true
है window.chrome
। बाहर की जाँच करें conditionizr.com जिसमें बुलेटप्रूफ डिटेक्ट + फिक्स है।
!!
मान को true
या तो परिवर्तित करता है या false
। typeof(window.chrome)
देता है "object"
, जबकि typeof(!!window.chrome)
देता है "boolean"
। आपका कोड नमूना भी काम करता है क्योंकि if
बयान रूपांतरण करता है।
true
एज के लिए भी वापसी करता है।
console.log(JSON.stringify({
isAndroid: /Android/.test(navigator.userAgent),
isCordova: !!window.cordova,
isEdge: /Edge/.test(navigator.userAgent),
isFirefox: /Firefox/.test(navigator.userAgent),
isChrome: /Google Inc/.test(navigator.vendor),
isChromeIOS: /CriOS/.test(navigator.userAgent),
isChromiumBased: !!window.chrome && !/Edge/.test(navigator.userAgent),
isIE: /Trident/.test(navigator.userAgent),
isIOS: /(iPhone|iPad|iPod)/.test(navigator.platform),
isOpera: /OPR/.test(navigator.userAgent),
isSafari: /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent),
isTouchScreen: ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch,
isWebComponentsSupported: 'registerElement' in document && 'import' in document.createElement('link') && 'content' in document.createElement('template')
}, null, ' '));
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
true
माइक्रोसॉफ्ट एज में वापसी ।
आप क्रोम का विशिष्ट संस्करण भी चाहते हैं:
var ua = navigator.userAgent;
if(/chrome/i.test(ua)) {
var uaArray = ua.split(' ')
, version = uaArray[uaArray.length - 2].substr(7);
}
माई के भीतर अपने जवाब का उपयोग करने के लिए द बिग लेबोव्स्की से माफी।
"537.36"
Microsoft एज में है।
आप उपयोग कर सकते हैं:
navigator.userAgent.indexOf("Chrome") != -1
यह v.71 पर काम कर रहा है
navigator.userAgent.includes("Chrome")
मैक पर क्रोम पर मेरे लिए काम करता है। उपरोक्त सभी की तुलना में सरल या अधिक विश्वसनीय (मामले में userAgent string परीक्षण किए गए) होना या होना प्रतीत होता है।
var isChrome = false;
if (window.chrome && !window.opr){
isChrome = true;
}
console.log(isChrome);
const isChrome = window.chrome && !window.opr;
उपयोगकर्ता उपयोगकर्ता एजेंट बदल सकता है। तत्व की वस्तु webkit
में पूर्वनिर्मित संपत्ति के लिए परीक्षण का प्रयास करेंstyle
body
if ("webkitAppearance" in document.body.style) {
// do stuff
}
इसे देखें: सफारी, क्रोम, IE, फ़ायरफ़ॉक्स और ओपेरा ब्राउज़र का पता कैसे लगाएं?
आपके मामले में: varChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime) है?
विभिन्न डेस्कटॉप ब्राउज़र (फ़ायरफ़ॉक्स, IE, ओपेरा, एज, क्रोम) के नाम जानने के लिए। सिवाय सफारी के।
function getBrowserName() {
var browserName = '';
var userAgent = navigator.userAgent;
(typeof InstallTrigger !== 'undefined') && (browserName = 'Firefox');
( /* @cc_on!@*/ false || !!document.documentMode) && (browserName = 'IE');
(!!window.chrome && userAgent.match(/OPR/)) && (browserName = 'Opera');
(!!window.chrome && userAgent.match(/Edge/)) && (browserName = 'Edge');
(!!window.chrome && !userAgent.match(/(OPR|Edge)/)) && (browserName = 'Chrome');
/**
* Expected returns
* Firefox, Opera, Edge, Chrome
*/
return browserName;
}
निम्नलिखित ब्राउज़र संस्करणों में काम करता है:
Opera - 58.0.3135.79
Firefox - 65.0.2 (64-bit)
IE - 11.413.15063 (JS Fiddle no longer supports IE just paste in Console)
Edge - 44.17763.1.0
Chrome - 72.0.3626.121 (Official Build) (64-bit)
मूल कोड स्निपेट ने अब क्रोम के लिए काम नहीं किया और मैं भूल गया कि मुझे यह कहां मिला है। इसमें पहले सफारी थी लेकिन अब मेरी सफारी तक पहुंच नहीं है इसलिए मैं अब सत्यापन नहीं कर सकता।
केवल फ़ायरफ़ॉक्स और IE कोड मूल स्निपेट का हिस्सा थे।
ओपेरा, एज और क्रोम के लिए जाँच सीधे आगे है। उपयोगकर्ताएजेंट में उनके अंतर हैं। OPR
केवल ओपेरा में मौजूद है। Edge
केवल एज में मौजूद है। तो क्रोम के लिए जांच करने के लिए ये स्ट्रिंग नहीं होना चाहिए।
फ़ायरफ़ॉक्स और IE के लिए, मैं समझा नहीं सकता कि वे क्या करते हैं।
मैं इस कार्यक्षमता को एक पैकेज लिख रहा हूँ
सभी उत्तर गलत हैं। "ओपेरा" और "क्रोम" सभी मामलों में समान हैं।
(संपादित हिस्सा)
यहाँ सही जवाब है
if (window.chrome && window.chrome.webstore) {
// this is Chrome
}
window.chrome.webstore
अब हैundefined