জাভাস্ক্রিপ্ট: ব্যবহারকারীর ব্রাউজারটি ক্রোম কিনা তা কীভাবে খুঁজে পাবেন?


220

ব্রাউজারটি আছে কিনা তা যাচাই করতে আমার বুলিয়ান মান ফিরিয়ে দেওয়ার জন্য কিছু ফাংশন প্রয়োজন ক্রোম

আমি কীভাবে এই জাতীয় কার্যকারিতা তৈরি করব?


16
আপনি কি নিশ্চিত যে পরিবর্তে আপনি বৈশিষ্ট্য সনাক্তকরণ করতে চান না (এটি জিজ্ঞাসার পরিবর্তে "এই ক্রোম?" জিজ্ঞাসা করুন "এটি কি আমার প্রয়োজন তা করতে পারে?")
বিডুকস

42
কে জানে? তিনি ব্যবহারকারী ডাউনলোড একটি Chrome extension থাকা করতে চাইবেন
নবীন

2
এই প্রশ্নটি ব্যবহারকারী এজেন্ট সনাক্তকরণের সমস্যার চিত্র তুলে ধরে। মাত্র তিন বছর পরে, ফান 3 ডি বক্স ব্যাকগ্রাউন্ডটি আমার লো-এন্ড মোবাইল ফোন ক্রোমে লোড করবে (চেষ্টা করার চেষ্টা করবে) তবে আমার উচ্চ-ডেস্কটপ কম্পিউটারে ফায়ারফক্সেও চেষ্টা করবে না।
vlvaro González

5
আমি সম্মত হই যে বৈশিষ্ট্য সনাক্তকরণ হ'ল উপায়। তবে এমন বৈধ ক্ষেত্র রয়েছে যেখানে আপনি সনাক্ত করতে চান। উদাহরণস্বরূপ, আমি শুধুমাত্র ক্রোমের জন্য বানর প্যাচ xhr.sendAsBinary করতে চাই। আমার প্রাথমিক সমাধান পরীক্ষা করা হয়েছে যদি ফাইলরেডার.ড্রেডবাইনারি প্রয়োগ করা হয়। তবে, আমার কিছু সমস্যা রয়েছে যেখানে এটি নির্দিষ্ট মোবাইল ব্রাউজারগুলির জন্য প্যাচ করে এবং তাই আপলোড ব্যর্থ হয়। আমি এই ক্রিমটি কেবল ক্রোমের জন্য চাই।
ফ্রস্টাইমারভেলেস

4
ব্রাউজারটি যদি ক্রোম হয় তবে এটি কেন প্রাসঙ্গিক হতে পারে তা জানতে চান? কীভাবে ক্রোম আরএসএস ফিডগুলি লোড করতে সক্ষম হচ্ছে না? সুতরাং যে ক্রোসে লোড করতে ব্যর্থ হবে এমন আরএসএস ফিডের সাথে লিঙ্ক করার পরিবর্তে, আপনি আসলে কোনও সতর্কতা সরবরাহ করতে পারবেন বা ব্যবহারকারীকে পুনর্নির্দেশ করতে পারবেন? গুগল ক্রোম আপনাকে ধন্যবাদ জানায় না ...
পিক মিকেল

উত্তর:


205

আপডেট: এটি পরিচালনা করার জন্য দয়া করে জোনাথনের উত্তর দেখুন । নীচের উত্তরটি এখনও কাজ করতে পারে তবে এটি সম্ভবত অন্যান্য ব্রাউজারগুলিতে কিছু মিথ্যা ইতিবাচক কারণকে উদ্বুদ্ধ করতে পারে।

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

তবে উল্লিখিত ব্যবহারকারীর এজেন্টদের ছদ্মবেশী করা যায় তাই এই উত্তরগুলি যেমন উত্তর হিসাবে উল্লিখিত হয় তেমন বৈশিষ্ট্য-সনাক্তকরণ (যেমন মডার্নাইজার ) ব্যবহার করা সর্বদা সেরা ।


.toLowerCase ব্যবহার করার পিছনে যুক্তি কী - কেবল নাভিগেটর.উজারএজেন্ট.ইন্ডেক্সফ ('ক্রোম') আমি দেখতে পাচ্ছি যে অনেক লোক এটি ব্যবহার করছে তবে আমি নিশ্চিত নই যে বিন্দুটি?
জন

7
@ সার্জ করুন কারণ তাদের ক্রোম নেই। এটি কেবল আইওএস সাফারিকে ঘিরে একটি ত্বক।
কবিতা

2
ধন্যবাদ, যদিও আপনার বর্ণের নাম উট কেস হওয়া উচিত
দিমিত্রি কোপ্রিভা

5
যেহেতু ব্রাউজার অনেক এই সময়ে ফেরৎ সত্য, এখানে কোড আমি ব্যবহৃত যা এজ, ম্যাক্সথন, প্রয়োজন iOS সাফারি ... ইত্যাদি বাদ এর var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
অ্যালেক্স সি

2
অপেরা (কমপক্ষে সংস্করণ 42) এ ফিরে Google Incআসে navigator.vendor, সুতরাং এই পদ্ধতিটি বুলেটপ্রুফ নয়, এর মতো কিছু /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)সম্ভবত আরও ভাল কাজ করবে
ইয়র্চ

314

ব্রাউজারটি গুগল ক্রোম কিনা তা পরীক্ষা করতে এটি ব্যবহার করে দেখুন:

// 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

এটি কাজ করার কারণ হ'ল যদি আপনি গুগল ক্রোম পরিদর্শক ব্যবহার করেন এবং কনসোল ট্যাবে যান। 'উইন্ডো' টাইপ করুন এবং এন্টার টিপুন। তারপরে আপনি 'উইন্ডো অবজেক্ট' এর জন্য DOM বৈশিষ্ট্যগুলি দেখতে সক্ষম হবেন। আপনি যখন বস্তুটি ভেঙে ফেলেন তখন আপনি 'ক্রোম' সম্পত্তি সহ সমস্ত বৈশিষ্ট্য দেখতে পাবেন।

আপনি IE এর জন্য চেক করতে কঠোরভাবে আর সমান সমান ব্যবহার করতে পারবেন না window.chrome। আইই ফিরে আসত undefined, এখন ফিরে আসবে trueতবে কী অনুমান করুন, আইই 11 এখন আবার অপরিবর্তিত ফেরত দেয়। আইই 11 এছাড়াও একটি খালি স্ট্রিং দেয়"" জন্য প্রদান করে window.navigator.vendor

আশা করি এটা কাজে লাগবে!

হালনাগাদ:

নীচের দিকে ইঙ্গিত করার জন্য হ্যালসিওন৯৯১-কে আপনাকে ধন্যবাদ , যে নতুন অপেরা ১৮ ++ এর ক্ষেত্রেও সত্য ঘটেছে window.chrome। দেখে মনে হচ্ছে অপেরা 18 ক্রোমিয়াম 31 এর উপর ভিত্তি করে । সুতরাং আমি তা নিশ্চিত করতে একটি চেক যুক্ত করেছি window.navigator.vendor: "Google Inc"এবং তা নেই "Opera Software ASA"রিং এবং অ্যাড্রিন বি এর জন্য ক্রোম 33 সম্পর্কে আর মাথা না ফেরার জন্য ধন্যবাদ, সত্যটি আর ফিরে আসেনি ... window.chromeএখন শূন্য নয় কিনা তা পরীক্ষা করে দেখুন। তবে আইই ১১-এর দিকে মনোযোগ দিন, আমি undefinedআইই ১১ এর পর থেকে চেক ব্যাকটি যুক্ত করেছি undefined, যেমনটি প্রথম প্রকাশের সময় যেমন হয়েছিল ... তারপরে কিছু আপডেট পরে trueএটি আউটপুট তৈরি হয় .. এখনকার আপডেট আপডেটটি আউটপুট করছেundefined হয়ে আবার । মাইক্রোসফ্ট মন তৈরি করতে পারে না!

আপডেট 7/24/2015 - অপেরা চেক জন্য সংযোজন

অপেরা 30 সবে মুক্তি পেয়েছে। এটি আর আউটপুট window.opera। এবং এছাড়াও window.chromeনতুন অপেরা 30. সুতরাং সত্যতে আউটপুট যদি আপনি চেক করতে হবে OPR হয় userAgent । অপেরা 30-এ এই নতুন পরিবর্তনের জন্য আমি আমার শর্তটি আপডেট করেছি, কারণ এটি গুগল ক্রোমের মতো একই রেন্ডার ইঞ্জিন ব্যবহার করে।

আপডেট 10/13/2015 - আইই চেক এর জন্য সংযোজন

কারণে এটা outputting অর্থাৎ এজ জন্য চেক যোগ করা হয়েছে trueজন্য window.chromeযদিও IE11 আউটপুট .. undefinedজন্য window.chrome। এই সম্পর্কে আমাদের জানানোর জন্য artfulhacker ধন্যবাদ !

আপডেট 2/5/2016 - আইওএস ক্রোম চেক জন্য সংযোজন

আইওএসে ক্রোমের জন্য CriOSআউটপুট করার কারণে আইওএস ক্রোম চেকের জন্য চেক যুক্ত করা হয়েছে trueঅষ্টম ধন্যবাদএই সম্পর্কে আমাদের !

হালনাগাদ 4/18/2018 - অপেরা চেকের জন্য পরিবর্তন করুন

অপেরা জন্য সম্পাদিত চেক পরীক্ষণ window.oprনয় undefinedযেহেতু এখন Chrome 66 হয়েছে OPRমধ্যে window.navigator.vendorফ্রস্টি জেড এবং ড্যানিয়েল ওয়ালম্যানকে এই প্রতিবেদন করার জন্য ধন্যবাদ !


এটি IE10 এর জন্য কাজ করে না। আইই 10 তে টাইপফ উইন্ডো.ক্রোম {অবজেক্ট returns
ম্যাগরিট

2
var হ'ল গুগল ক্রোম = উইন্ডো.ক্রোম! = নাল && window.navigator.vendor === "গুগল ইনক।";
রিং

1
ধন্যবাদ @ অষ্টমী .. আমি সবেমাত্র আইওএস ক্রোমের জন্য একটি চেক যুক্ত করেছি .. অনেক প্রশংসা! :)
জোনাথন মারজুলো

2
ড্যানিয়েল ওয়ালম্যানের মতো একই সমস্যা এখানে: আমার অ্যান্ড্রয়েড ক্রোম ব্যবহারকারী এজেন্টে "ওপিআর" স্ট্রিং রয়েছে! 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() প্রত্যাবর্তন ।
ফ্রস্টি জেড

2
আমাদের জানানোর জন্য আপনাকে @ ফ্রস্টিজেড এবং @ ড্যানিয়েলওয়ালম্যানকে ধন্যবাদ। আমি এটি ঠিক করেছি যাতে অপেরা চেক করে window.oprনা undefined
জোনাথন মারজুলো


16

আরও সহজ সমাধানটি কেবল ব্যবহারের জন্য:

var isChrome = !!window.chrome;

!!শুধু একটি বুলিয়ান মান বস্তু পরিবর্তন করে। নন-ক্রোম ব্রাউজারগুলিতে, এই সম্পত্তিটি হবে undefined, যা সত্য নয়।

নোট করুন এটি ক্রমের উপর ভিত্তি করে এজগুলির সংস্করণগুলির ক্ষেত্রেও সত্য ফিরে আসে (এটি নির্দেশ করার জন্য @ ক্যারাম ধন্যবাদ)।


5
অপেরা আসলে ফিরে trueআসে window.chrome। কন্ডিশিজr.com দেখুন যা বুলেটপ্রুফ সনাক্তকরণ + ঠিক আছে।
Halcyon991

7
ঠিক আছে, অপেরা মূলত যদিও ক্রোম
কারেল বেলেক 6'14

আমি শুধু বুঝতে পারছি না কেন দুবার !! , আপনি সরাসরি ব্যবহার করতে পারেন, যদি (ক্রোম) {}
বিশাল শর্মা

3
@ বিশলশর্মা, !!মানকে হয় trueবা রূপান্তর করে falsetypeof(window.chrome)দেয় "object", যেখানে typeof(!!window.chrome)দেয় "boolean"। আপনার কোডের নমুনাটিও খুব কার্যকর হয় কারণ ifবিবৃতিটি রূপান্তর করে।
ড্র নোকস

1
এটি trueএজের জন্যও ফিরে আসে ।
কারম

14

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, '  '));


দুর্ভাগ্যক্রমে, নেভিগেটর.ভেন্ডার === "গুগল ইনক।" অপেরাতে (কমপক্ষে v.49) তাই আপনার কোড ব্যবহার করে অপেরা Chrome হিসাবে উপস্থিত হবে।
Wojtek Majerski

9
বিশ্বের কোথাও কোথাও একটি বিড়ালছানা মারা যায় প্রতিটি রেইগেক্সের জন্য আমাদের আসলে প্রয়োজন হয় না।
জেড

কোনও ব্যাখ্যা, মিথ্যা ধনাত্মক / নেতিবাচক কোনও ইঙ্গিত নেই, কেবল কোডের এক টুকরা এখানে ফেলে দেওয়া হয়েছে ... এই প্রতিক্রিয়াটি সত্যই ডাউনভোট হওয়া উচিত। এটি জিজ্ঞাসা করা প্রশ্নের উত্তরও নয়।
আলেকজান্ডার জার্মেই

8
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );

3
আমি এটি পছন্দ করেছি, মনে রাখবেন আপনি var is_chrome = /chrome/i.test(navigator.userAgent )ও করতে পারেন; খুব
অ্যালানফোস্টার

14
রিটার্নস trueমাইক্রোসফট এজ হবে।
কবি

@ কবি: সমস্ত প্রাপ্য সম্মানের সাথে, এজটি তখন মুক্তি দেওয়া হয়নি। তথ্যের জন্য ধন্যবাদ :)
নবীন

3

আপনি ক্রোমের নির্দিষ্ট সংস্করণটিও পেতে পারেন:

var ua = navigator.userAgent;
if(/chrome/i.test(ua)) {
    var uaArray = ua.split(' ')
    ,   version = uaArray[uaArray.length - 2].substr(7);
}

আমার মধ্যে তাঁর উত্তরটি ব্যবহার করার জন্য দ্য বিগ লেবোভস্কির কাছে ক্ষমাপ্রার্থী।


4
সংস্করণটি "537.36"মাইক্রোসফ্ট এজতে রয়েছে।
কবি


2

ম্যাকের ক্রোমে আমার জন্য কাজ করে। উপরের তুলনায় সবচেয়ে সহজ বা সহজ বা আরও নির্ভরযোগ্য (ইউজার এজেন্ট স্ট্রিং পরীক্ষিত ক্ষেত্রে) মনে হচ্ছে।

        var isChrome = false;
        if (window.chrome && !window.opr){
            isChrome = true;
        }
        console.log(isChrome);

2
const isChrome = window.chrome && !window.opr;
ifeelbadformyoldquestions

1

ব্যবহারকারী ব্যবহারকারী এজেন্ট পরিবর্তন করতে পারে। উপাদানটির অবজেক্টে webkitউপসর্গযুক্ত সম্পত্তি পরীক্ষা করার চেষ্টা করুনstylebody

if ("webkitAppearance" in document.body.style) {
  // do stuff
}

1
ফায়ারফক্সে: (ডকুমেন্ট.বডি.স্টাইলে "ওয়েবকিটএনিমেশন") === সত্য
টমাস প্রাদো

3
এফওয়াইআই: 'ওয়েবকিটঅ্যাপিয়ারেন্স' আর কাজ করে না। এজ এখন এটি ব্যবহার করছে। আপনার উত্তর মুছে ফেলার জন্য সম্ভবত সেরা। ^^
হেক্সালিস


0

বিভিন্ন ডেস্কটপ ব্রাউজারগুলির নাম জানতে (ফায়ারফক্স, আইই, অপেরা, এজ, ক্রোম)। সাফারি বাদে।

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)

সারকথা দেখুন এখানে এবং বেহালার এখানে

মূল কোড স্নিপেট আর Chrome এর জন্য কাজ করে না এবং আমি এটি কোথায় পেয়েছি তা ভুলে গিয়েছিলাম। এর আগে সাফারি ছিল তবে আমার আর সাফারি অ্যাক্সেস নেই তাই আমি আর যাচাই করতে পারি না।

শুধুমাত্র ফায়ারফক্স এবং আইই কোডগুলি মূল স্নিপেটের অংশ ছিল।

অপেরা, এজ এবং ক্রোমের জন্য চেক করা সরাসরি এগিয়ে রয়েছে। ইউজার এজেন্টে তাদের পার্থক্য রয়েছে। OPRকেবল অপেরাতে বিদ্যমান।Edgeশুধুমাত্র এজ এ বিদ্যমান। তাই ক্রোমের জন্য যাচাই করার জন্য এই স্ট্রিংটি থাকা উচিত নয়।

ফায়ারফক্স এবং আইই হিসাবে, তারা কী করে তা আমি ব্যাখ্যা করতে পারি না।

আমি লিখছি এমন একটি প্যাকেজে এই কার্যকারিতা যুক্ত করব


-4

সমস্ত উত্তর ভুল। "অপেরা" এবং "ক্রোম" সমস্ত ক্ষেত্রে একই।

(সম্পাদিত অংশ)

এখানে সঠিক উত্তর

if (window.chrome && window.chrome.webstore) {
    // this is Chrome
}

1
উত্তরের চেয়ে ভাল মন্তব্য
জেস কটন

আপনি যদি ভাবছেন যে কেন আপনাকে মোড করা হয়েছিল, এটি কেবল সত্য নয়। একটি উদাহরণের জন্য, তারা কীবোর্ড শর্টকাটগুলি হ্যান্ডেল করে এবং কী সংশোধকগুলিকে আলাদাভাবে অ্যাক্সেস করে (এবং এগুলি বৈশিষ্ট্যটিও সনাক্ত করা যায় না)।
জিল্ক

আমি বলি না যে 'অপেরা' এবং 'ক্রোম' একই ব্রাউজারে কেবল আইকনটি আলাদা। আমি বলছি যে উপরে বর্ণিত পদ্ধতিগুলি উভয় ব্রাউজারের জন্য একই ফল দিচ্ছে।
আরারাত হারুটিউইয়ান

@ জিল্ক আপনি উদাহরণস্বরূপ প্রথম উত্তরটির পরীক্ষা করেছেন যা 66 66 টি ভোট পেয়েছে?
আরারাত হারুটিউইয়ান

9
এটি ক্রোম 71 হিসাবে আর কাজ করবে না। window.chrome.webstoreএখনundefined
এস্তেবান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.