সাফারি, ক্রোম, আইই, ফায়ারফক্স এবং অপেরা ব্রাউজার কীভাবে সনাক্ত করবেন?


822

আমার কাছে এফএফ, ক্রোম, আইই, অপেরা এবং সাফারির জন্য 5 টি অ্যাডোনস / এক্সটেনশন রয়েছে।

আমি কীভাবে ব্যবহারকারীর ব্রাউজারকে চিনতে পারি এবং সংশ্লিষ্ট অ্যাডনটি ডাউনলোড করতে (একবার ইনস্টল বোতামটি ক্লিক করা হয়ে থাকে) পুনর্নির্দেশ করতে পারি?


2
সনাক্ত করার চেষ্টা করুন, এটি সমস্ত ব্রাউজারের জন্য ব্যবহার করা যেতে পারে
ডুড


2
detect.js আর (অনুযায়ী পরিচালিত হয় github.com/darcyclarke/Detect.js ), তাদের সুপারিশ করা github.com/lancedikson/bowser
YakovL

আমি ইউএপারসার প্লাগইন ব্যবহার করেছি, এটি ভ্যানিলা জাভাস্ক্রিপ্টে লেখা আছে। উত্স: জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে ব্রাউজার, ইঞ্জিন, ওএস, সিপিইউ এবং ডিভাইস সনাক্ত করা যায়?
লুজান বড়াল

উত্তর:


1686

ব্রাউজারের নির্ভরযোগ্য সনাক্তকরণের জন্য গুগলিংয়ের ফলে প্রায়শই ব্যবহারকারী এজেন্ট স্ট্রিং চেক করা যায়। এই পদ্ধতিটি নির্ভরযোগ্য নয় , কারণ এই মানটির ছাঁটাই করা তুচ্ছ। হাঁস-টাইপ
করে ব্রাউজারগুলি সনাক্ত করার জন্য আমি একটি পদ্ধতি লিখেছি ।

ব্রাউজার সনাক্তকরণ পদ্ধতিটি যদি সত্যই প্রয়োজন হয় তবে এটি ব্যবহার করুন যেমন কোনও এক্সটেনশান ইনস্টল করতে ব্রাউজার-নির্দিষ্ট নির্দেশাবলী দেখানো। সম্ভব হলে বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করুন।

ডেমো: https://jsfiddle.net/6spj1059/

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ "[object HTMLElementConstructor]" 
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1 - 79
var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);

// Edge (based on chromium) detection
var isEdgeChromium = isChrome && (navigator.userAgent.indexOf("Edg") != -1);

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;


var output = 'Detecting browsers by ducktyping:<hr>';
output += 'isFirefox: ' + isFirefox + '<br>';
output += 'isChrome: ' + isChrome + '<br>';
output += 'isSafari: ' + isSafari + '<br>';
output += 'isOpera: ' + isOpera + '<br>';
output += 'isIE: ' + isIE + '<br>';
output += 'isEdge: ' + isEdge + '<br>';
output += 'isEdgeChromium: ' + isEdgeChromium + '<br>';
output += 'isBlink: ' + isBlink + '<br>';
document.body.innerHTML = output;

নির্ভরযোগ্যতা বিশ্লেষণ

পূর্ববর্তী পদ্ধতি রেন্ডারিং ইঞ্জিন (বৈশিষ্ট্য উপর নির্ভরশীল -moz-box-sizingএবং -webkit-transform) ব্রাউজার সনাক্ত করতে। এই উপসর্গগুলি শেষ পর্যন্ত বাদ দেওয়া হবে, সুতরাং সনাক্তকরণটিকে আরও শক্তিশালী করতে আমি ব্রাউজার-নির্দিষ্ট বৈশিষ্ট্যগুলিতে স্যুইচ করেছি:

  • ইন্টারনেট এক্সপ্লোরার: জেএসক্রিপ্টের শর্তসাপেক্ষ সংকলন (আইআই 9 অবধি) এবং document.documentMode
  • এজ: ট্রাইডেন্ট এবং এজ ব্রাউজারগুলিতে মাইক্রোসফ্টের প্রয়োগগুলি StyleMediaনির্মাণকারীকে প্রকাশ করে । ট্রাইডেন্টকে বাদ দিয়ে এজ আমাদের ছেড়ে দেয়।
  • এজ (ক্রোমিয়ামের উপর ভিত্তি করে): ব্যবহারকারী এজেন্টের শেষে "এজ / [সংস্করণ]" মান অন্তর্ভুক্ত রয়েছে (উদা: "মোজিলা / 5.0 (উইন্ডোজ এনটি 10.0; উইন 64; এক্স 64) অ্যাপলওয়েবকিট / 537.36 (কেএইচটিএমএল, গেকোর মতো) ক্রোম / 80.0.3987.16 সাফারি / 537.36 এজ / 80.0.361.9 ")।
  • ফায়ারফক্স: অ্যাড-অন ইনস্টল করতে ফায়ারফক্সের এপিআই: InstallTrigger
  • ক্রোম: বিশ্বব্যাপী chromeঅবজেক্ট, একটি ডকুমেন্টেড chrome.webstoreঅবজেক্ট সহ বেশ কয়েকটি বৈশিষ্ট্যযুক্ত ।
  • আপডেট 3 chrome.webstoreসাম্প্রতিক সংস্করণগুলিতে অবচয় এবং অপরিজ্ঞাত
  • সাফারি: কনস্ট্রাক্টরগুলির নামকরণের ক্ষেত্রে এটি একটি অনন্য নামকরণের প্যাটার্ন। এটি সমস্ত তালিকাভুক্ত সম্পত্তিগুলির ন্যূনতম টেকসই পদ্ধতি এবং অনুমান কী? সাফারি 9.1.3 এ এটি ঠিক করা হয়েছিল। সুতরাং আমরা SafariRemoteNotification3.0 এবং এর থেকে উপরে সমস্ত সাফারিগুলি কভার করতে সংস্করণ 7.1 এর পরে প্রবর্তিত হয়েছিল তার বিরুদ্ধে আমরা যাচাই করছি ।
  • অপেরা: window.operaকয়েক বছর ধরে অস্তিত্ব রয়েছে, তবে অপেরা যখন ইঞ্জিনটি ব্লিঙ্ক + ভি 8 (ক্রোমিয়াম দ্বারা ব্যবহৃত) এর সাথে প্রতিস্থাপন করবে তখন তা ফেলে দেওয়া হবে
  • আপডেট 1: অপেরা 15 প্রকাশিত হয়েছে , এর ইউএ স্ট্রিংটি ক্রোমের মতো দেখাচ্ছে তবে "ওপিআর" সংযোজন রয়েছে। এই সংস্করণে chromeঅবজেক্টটি সংজ্ঞায়িত করা হয়েছে (তবে chrome.webstoreতা নয়)। যেহেতু অপেরা ক্রোম ক্লোন করার জন্য কঠোর চেষ্টা করে, তাই আমি এজেন্টের জন্য এজেন্ট স্নিফিং ব্যবহার করি।
  • আপডেট 2: অপেরা 20+ (চিরসবুজ) !!window.opr && opr.addonsসনাক্ত করতে ব্যবহার করা যেতে পারে ।
  • ব্লিংক: গুগল ক্রোম 28 স্যুইচ করার পরে CSS.supports() ব্লিঙ্কে চালু হয়েছিল It's এটি অবশ্যই অপেরাতে একই ব্লিঙ্ক ব্যবহৃত হয়েছিল।

সফলভাবে পরীক্ষিত:

  • ফায়ারফক্স 0.8 - 61
  • ক্রোম 1.0 - 71
  • অপেরা 8.0 - 34
  • সাফারি 3.0 - 10
  • আইই 6 - 11
  • প্রান্ত - 20-42
  • এজ দেব - 80.0.361.9

9.1.3 এবং উপরের দিকে সাফারি ব্রাউজারগুলির সনাক্তকরণ অন্তর্ভুক্ত করতে নভেম্বর 2016 এ আপডেট হয়েছে

ক্রোম, ফায়ারফক্স আইই এবং প্রান্তের সর্বশেষতম সফল পরীক্ষাগুলি আপডেট করতে আগস্ট 2018 এ আপডেট হয়েছে Updated

ক্রোম সনাক্তকরণ ঠিক করার জন্য জানুয়ারী 2019 এ আপডেট হয়েছে (উইন্ডো। ক্রোম.বিস্টোর অবমূল্যায়নের কারণে) এবং ক্রোমের সর্বশেষতম সফল পরীক্ষাগুলি অন্তর্ভুক্ত করেছে।

ক্রোমিয়াম সনাক্তকরণের উপর ভিত্তি করে এজ যোগ করতে 2019 এর ডিসেম্বরে আপডেট হয়েছে (@ নিমেশ মন্তব্যের ভিত্তিতে)।


5
এফওয়াইআই এটি ক্রোম এক্সটেনশনগুলির সাথে কাজ করে না যেমন window.chrome.webstoreসেখানে সংজ্ঞায়িত। ফায়ারফক্স এক্সটেনশনগুলির সাহায্যে এটি পরীক্ষা করা হয়নি। is.jsউল্লিখিত অন্যত্র ক্রোম এবং ফায়ারফক্স এক্সটেনশন উভয় ক্ষেত্রেই কাজ করে।
nevf

60
isSafariসাফারি ১০ এর সাথে কাজ করে না। আমি যুক্তি দিতে যাচ্ছি এটি একটি খারাপ সমাধান (এমন নয় যে আমার ভাল সমাধান হয়েছে)। আপনার চেক করা জিনিসগুলির অনেকগুলি অপসারণ করা হবে না বা অন্য ব্রাউজারগুলি যোগ করা হবে না এর কোনও গ্যারান্টি নেই। সাফারি চেক করার জন্য এই কোডটি ব্যবহার করা প্রতিটি সাইট
ম্যাকস

10
কিন্তু এটি কি সেই ব্রাউজারগুলির মোবাইল সংস্করণগুলির পাশাপাশি ডেস্কটপ সংস্করণগুলিতেও পরীক্ষা করা হয়েছে? এবং সত্য কথা, প্রতি প্ল্যাটফর্মে বিভিন্ন মোবাইল সংস্করণ এবং বিভিন্ন ডেস্কটপ সংস্করণ রয়েছে। সুতরাং সত্যই, ফায়ারফক্সের উইন্ডোজ, লিনাক্স, ম্যাক ওএস এবং 3 টি বাইনারি অ্যান্ড্রয়েড এবং আইওএসের জন্য রয়েছে bin
DrZ214

3
বর্তমান isSafariঅধীনে কাজ করে না <iframe>সাফারি 10.1.2 অধীনে
Mikko Ohtamaa

23
উইন্ডো.ক্রোম.ওয়েবস্টোর ক্রোম ভার থেকে শুরু করে অবহেলা করা হয়েছে। 71: blog.chromium.org/2018/06/…
st_bk

133

আপনি ব্রাউজার সংস্করণ চেক করার জন্য নিম্নলিখিত উপায় চেষ্টা করতে পারেন।

    <!DOCTYPE html>
    <html>
    <body>
    <p>What is the name(s) of your browser?</p>
    <button onclick="myFunction()">Try it</button>
    <p id="demo"></p>
    <script>

    function myFunction() { 
     if((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf('OPR')) != -1 ) 
    {
        alert('Opera');
    }
    else if(navigator.userAgent.indexOf("Chrome") != -1 )
    {
        alert('Chrome');
    }
    else if(navigator.userAgent.indexOf("Safari") != -1)
    {
        alert('Safari');
    }
    else if(navigator.userAgent.indexOf("Firefox") != -1 ) 
    {
         alert('Firefox');
    }
    else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
    {
      alert('IE'); 
    }  
    else 
    {
       alert('unknown');
    }
    }
    </script>

    </body>
    </html>

এবং যদি আপনার কেবলমাত্র আইই ব্রাউজার সংস্করণটি জানতে হয় তবে আপনি নীচের কোডটি অনুসরণ করতে পারেন। এই কোডটি IE6 থেকে IE11 সংস্করণে ভাল কাজ করে

<!DOCTYPE html>
<html>
<body>

<p>Click on Try button to check IE Browser version.</p>

<button onclick="getInternetExplorerVersion()">Try it</button>

<p id="demo"></p>

<script>
function getInternetExplorerVersion() {
   var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE ");
        var rv = -1;

        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer, return version number
        {               

            if (isNaN(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))))) {
                //For IE 11 >
                if (navigator.appName == 'Netscape') {
                    var ua = navigator.userAgent;
                    var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
                    if (re.exec(ua) != null) {
                        rv = parseFloat(RegExp.$1);
                        alert(rv);
                    }
                }
                else {
                    alert('otherbrowser');
                }
            }
            else {
                //For < IE11
                alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
            }
            return false;
        }}
</script>

</body>
</html>

3
কেন কেউ এত লাইন কোড লিখবে? ব্যবহারকারী এজেন্ট অস্পষ্ট।
igaurav

5
মাইক্রোসফ্ট এজ সম্পর্কে কী?
ব্যবহারকারী 6031759

3
উপরের উত্তরটি সাফারি পরীক্ষা করার আগে ক্রোমের জন্য পরীক্ষা করে। কারণ সাফারির chromeইউজারজেন্টে কীওয়ার্ড থাকবে না । সাফারি ইউজারেজেন্টের উদাহরণ -mozilla/5.0 (macintosh; intel mac os x 10_11_5) applewebkit/601.6.17 (khtml, like gecko) version/9.1.1 safari/601.6.17
গোলক সারঙ্গি


3
অপেরা (সর্বশেষ সংস্করণ) এ এটি পরীক্ষা করার সময়, এটি আমার জন্য 'ক্রোম' দেয়। এটি ঠিক করার জন্য, আমি অপেরাটি পরিবর্তন করেছিলাম যদি বিবৃতিতে:if(navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR') != -1 )
কাইল ভ্যাসেলা

60

আমি জানি যে এটির জন্য একটি lib ব্যবহার করা অতিরিক্ত পরিমাণে হতে পারে তবে কেবল থ্রেডকে সমৃদ্ধ করার জন্য আপনি is.js এর কাজ করার উপায়টি পরীক্ষা করতে পারেন :

is.firefox();
is.ie(6);
is.not.safari();

9
হুডের নীচে এটি মূলত ব্যবহারকারী-এজেন্ট সনাক্তকরণ করছে Just জায়গায় বিক্রেতার সনাক্তকরণ / কিছু বৈশিষ্ট্য সনাক্তকরণের সাথে পরিপূরক।
টাইগারক্র্যাশ

1
@ টাইগারক্র্যাশ নিশ্চিত, আপনি একদম ঠিক আছেন। আমার উত্তরটির সাথে এটিই আমি বোঝাতে চাইছিলাম: উত্সের কোডটি খুলুন is.jsএবং তারা কীভাবে তা পরীক্ষা করে দেখুন।
রাফায়েল আইং

4
jQuery অনুরূপ বৈশিষ্ট্য অন্তর্ভুক্ত করতে ব্যবহৃত: bbrowser.msie
রিগা

@ রাফায়েলইং: আমি মনে করি এটির সাথে ব্যবহারকারী-এজেন্ট সনাক্তকরণের বিষয়টি হ'ল এই পদ্ধতিটি অবিশ্বাস্য।
হোল্ডঅফহাঙ্গার

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

51

এখানে বেশ কয়েকটি বিশিষ্ট গ্রন্থাগার রয়েছে যা 2019 সালের ডিসেম্বর পর্যন্ত ব্রাউজার সনাক্তকরণ পরিচালনা করে।

Bowser lancedikson দ্বারা - 4.065 ★ এস - সর্বশেষ আপডেট হয়েছে অক্টোবর 2, 2019 - 4.8KB

var result = bowser.getParser(window.navigator.userAgent);
console.log(result);
document.write("You are using " + result.parsedResult.browser.name +
               " v" + result.parsedResult.browser.version + 
               " on " + result.parsedResult.os.name);
<script src="https://unpkg.com/bowser@2.7.0/es5.js"></script>

* ক্রোমিয়ামের উপর ভিত্তি করে এজ সমর্থন করে


প্ল্যাটফর্ম.জেগুলি বেস্টিজেজ দ্বারা - 2,550 ★ গুলি - সর্বশেষ আপডেট হয়েছে 14 এপ্রিল, 2019 - 5.9 কেবি

console.log(platform);
document.write("You are using " + platform.name +
               " v" + platform.version + 
               " on " + platform.os);
<script src="https://cdnjs.cloudflare.com/ajax/libs/platform/1.3.5/platform.min.js"></script>

গ্যাবসিবি দ্বারা jQuery ব্রাউজার - 504 ★ গুলি - সর্বশেষ আপডেট 23 নভেম্বর, 2015 - 1.3 কেবি

console.log($.browser)
document.write("You are using " + $.browser.name +
               " v" + $.browser.versionNumber + 
               " on " + $.browser.platform);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-browser/0.1.0/jquery.browser.min.js"></script>

Darcyclarke - 522 ★ s - দ্বারা সর্বশেষ আপডেট হয়েছে 26 অক্টোবর, 2015 - 2.9 কেবি

var result = detect.parse(navigator.userAgent);
console.log(result);
document.write("You are using " + result.browser.family +
               " v" + result.browser.version + 
               " on " + result.os.family);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Detect.js/2.2.2/detect.min.js"></script>

কুইর্কসমোড দ্বারা ব্রাউজার সনাক্তকরণ (সংরক্ষণাগারভুক্ত) - সর্বশেষ আপডেট হয়েছে 14 নভেম্বর, 2013 - 884 বি

console.log(BrowserDetect)
document.write("You are using " + BrowserDetect.browser +
               " v" + BrowserDetect.version + 
               " on " + BrowserDetect.OS);
<script src="https://kylemit.github.io/libraries/libraries/BrowserDetect.js"></script>


উল্লেখযোগ্য উল্লেখ:

  • হোয়াট ব্রাউজার - 1,355 ★ গুলি - সর্বশেষ আপডেট হয়েছে অক্টোবর 2, 2018
  • Modernizr - 23.397 ★ এস - সর্বশেষ আপডেট হয়েছে জানুয়ারী 12, 2019 - একটি ফেড ঘোড়া খাবার যোগাতে, বৈশিষ্ট্য সনাক্তকরণ কোনো চালনা করা উচিত canIuse শৈলী প্রশ্ন। ব্রাউজার সনাক্তকরণটি কেবলমাত্র স্বনির্ধারিত চিত্র সরবরাহ করার জন্য, ফাইলগুলি ডাউনলোড করতে বা পৃথক ব্রাউজারগুলির জন্য নির্দেশাবলীর জন্য।

আরও পড়া


1
চাকাটি পুনরুদ্ধার না করার জন্য বেশ কয়েকটি কেবি ওভারহেড।
গ্লিফ

46

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

/**
 * Gets the browser name or returns an empty string if unknown. 
 * This function also caches the result to provide for any 
 * future calls this function has.
 *
 * @returns {string}
 */
var browser = function() {
    // Return cached result if avalible, else get result then cache it.
    if (browser.prototype._cachedResult)
        return browser.prototype._cachedResult;

    // Opera 8.0+
    var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

    // Firefox 1.0+
    var isFirefox = typeof InstallTrigger !== 'undefined';

    // Safari 3.0+ "[object HTMLElementConstructor]" 
    var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);

    // Internet Explorer 6-11
    var isIE = /*@cc_on!@*/false || !!document.documentMode;

    // Edge 20+
    var isEdge = !isIE && !!window.StyleMedia;

    // Chrome 1+
    var isChrome = !!window.chrome && !!window.chrome.webstore;

    // Blink engine detection
    var isBlink = (isChrome || isOpera) && !!window.CSS;

    return browser.prototype._cachedResult =
        isOpera ? 'Opera' :
        isFirefox ? 'Firefox' :
        isSafari ? 'Safari' :
        isChrome ? 'Chrome' :
        isIE ? 'IE' :
        isEdge ? 'Edge' :
        isBlink ? 'Blink' :
        "Don't know";
};

console.log(browser());


2
এজ ব্রাউজারে এটি ক্রোম
ফেরায়

2
@eFender আমি সর্বশেষতম ব্রাউজার পরীক্ষার উত্তর আপডেট করেছি।
পিলাউ

4
আমি এটি পছন্দ করি তবে আমি "জানি না" এর পরিবর্তে ব্যবহারকারী এজেন্ট () এর কাছে ফ্যালব্যাকটি পছন্দ করতাম।
হোল্ডঅফহ্যাঙ্গার

2
window.chrome.webstoreক্রোম 71 এ সম্পত্তি মুছে ফেলা হয়েছে, সুতরাং এই পদ্ধতিটি আর কাজ করছে না।
বেদলা

আপনি ফাংশনটি এমন কোনও ফাংশন দিয়ে ওভাররাইট করতে পারেন যা কেবল ক্যাশেডেরসাল্ট ফেরত দেয় এবং যদি বিবৃতিটি বাদ দেয়। আপনার চারপাশের প্রথমবারের জন্য এখনও ফলাফলটি ফিরে আসতে হবে। ব্রাউজার = ফাংশন () {রিটার্ন ক্যাশেড রেজাল্ট}; ক্যাশেড রিসার্ট রিটার্ন;
তিমার ইভো বাটিস

22

সংক্ষিপ্ত রূপ

var browser = (function() {
    var test = function(regexp) {
        return regexp.test(window.navigator.userAgent);
    }
    switch (true) {
        case test(/edg/i): return "edge";
        case test(/opr/i) && (!!window.opr || !!window.opera): return "opera";
        case test(/chrome/i) && !!window.chrome: return "chrome";
        case test(/trident/i): return "ie";
        case test(/firefox/i): return "firefox";
        case test(/safari/i): return "safari";
        default: return "other";
    }
})();
console.log(browser)


আপনি যদি আমাকে অপছন্দ করেন তবে দয়া করে কেন তা ব্যাখ্যা করুন।
অ্যালেক্স নিকুলিন


11

মাইক্রোসফ্ট এজ এবং ব্লিঙ্ক সনাক্তকরণ সহ রবের জবাবের একটি 2016 সমন্বিত সংস্করণ এখানে রয়েছে:

( সম্পাদনা করুন : আমি এই তথ্য দিয়ে রবের উত্তর উপরে আপডেট করেছি))

// Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Firefox 1.0+
isFirefox = typeof InstallTrigger !== 'undefined';
// Safari 3.0+
isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
// Internet Explorer 6-11
isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
isChrome = !!window.chrome && !!window.chrome.webstore;
// Blink engine detection
isBlink = (isChrome || isOpera) && !!window.CSS;

/* Results: */
console.log("isOpera", isOpera);
console.log("isFirefox", isFirefox);
console.log("isSafari", isSafari);
console.log("isIE", isIE);
console.log("isEdge", isEdge);
console.log("isChrome", isChrome);
console.log("isBlink", isBlink);

এই পদ্ধতির সৌন্দর্যটি হ'ল এটি ব্রাউজার ইঞ্জিনের বৈশিষ্ট্যগুলির উপর নির্ভর করে, তাই এটি ইয়ানডেক্স বা ভিভালদি এর মতো এমনকি ডেরাইভেটিভ ব্রাউজারগুলিকেও কভার করে, যা প্রধানত ব্রাউজারগুলির সাথে ব্যবহার করে যা তাদের ইঞ্জিনগুলি ব্যবহার করে compatible ব্যতিক্রম অপেরা, যা ব্যবহারকারী এজেন্ট স্নিফিংয়ের উপর নির্ভর করে তবে আজ (অর্থাত্ ভার্চু 15 এবং উপরে) এমনকি অপেরা নিজেও ব্লিঙ্কের জন্য কেবল একটি শেল।


!!window.MSAssertion;পরীক্ষা রিমোট ডেস্কটপ মাধ্যমে এজ বিটা আমার জন্য কাজ করে না। এটি মিথ্যা প্রত্যাবর্তন।
NoR

@ নোআর আপনি এজ এর কোন সংস্করণ ব্যবহার করছেন? এটি গুরুত্বপূর্ণ
পিলাউ

1
@ নাআর ওহ, আপনি ভিএম ব্যবহার করছেন ... MSAssertionকৌশলটি 25 সংস্করণে সামঞ্জস্য হয়েছে But ভাল কল. ধন্যবাদ।
পিলাউ

1
@ নোআর আপডেট করা হয়নি - ভবিষ্যতের প্রতিরোধী হওয়া উচিত। StyleMedia(মূলধন) বস্তু অর্থাৎ এজ নির্দিষ্ট এবং যেকোনো জায়গায় যাচ্ছে বলে মনে হচ্ছে না।
pilau

1
আমি ইউএপারসারকে একটি জেএস প্লাগইনও পেয়েছি যা এখনও রক্ষণাবেক্ষণ করেছে এবং এটি অত্যন্ত নির্ভুল এবং সহজে ব্যবহারযোগ্য।
ইস্যাক গ্যাবল

9

আপনি বিভিন্ন ব্রাউজার ত্রুটি বার্তা ব্যবহার করতে tryএবং ব্যবহার করতে পারেন catch। আই এবং এজটি মিশ্রিত হয়েছিল, তবে আমি রব ডাব্লু থেকে হাঁসের টাইপিং ব্যবহার করেছি (এই প্রকল্পের উপর ভিত্তি করে এখানে: https://www.khanacademy.org/computer-programming/i-have-opera/2395080328 )।

var getBrowser = function() {        
    try {
        var e;
        var f = e.width;
    } catch(e) {
        var err = e.toString();

        if(err.indexOf("not an object") !== -1) {
            return "safari";
        } else if(err.indexOf("Cannot read") !== -1) {
            return "chrome";
        } else if(err.indexOf("e is undefined") !== -1) {
            return "firefox";
        } else if(err.indexOf("Unable to get property 'width' of undefined or null reference") !== -1) {
            if(!(false || !!document.documentMode) && !!window.StyleMedia) {
                return "edge";
            } else {
                return "IE";
            }
        } else if(err.indexOf("cannot convert e into object") !== -1) {
            return "opera";
        } else {
            return undefined;
        }
    }
};

এটি দুর্দান্ত ধারণা: আপনার "উইন্ডো" বা "ন্যাভিগেটর" অবজেক্টের দরকার নেই!
ভাদিম

আমার পরামর্শটি হ'ল ডকুমেন্ট এবং উইন্ডো সম্পূর্ণরূপে মুক্তি পাওয়ার জন্য। আই আই শঙ্ক দেখুন: "ফায়ারফক্স" রিটার্ন করুন; } অন্যথায় যদি (err.search ("[অবজেক্ট ত্রুটি]"))! == -1 && e.message! = নাল && ই। বিবরণ! = নাল) "" আইই "ফেরত; } অন্যথায় যদি (এরার সার্চ ("ই বস্তুকে রূপান্তর করতে পারে না"))! == -1) opera "অপেরা" ফিরিয়ে দিন;
ভাদিম

কীভাবে এটি আই এবং প্রান্তের মধ্যে পার্থক্য করতে পারে?
ম্যাসন জোনস

আশ্চর্যের বিষয়, আমি এরর অনুসন্ধান ("[বস্তুর ত্রুটি]") আর প্রজনন করতে পারি না। যাইহোক, আমার জন্য ফায়ারফক্স বনাম ক্রোম বনাম অন্য কিছু যথেষ্ট। আমি এটিকে এমন কোনও পিএসি ফাইলে ব্যবহার করি যেখানে উইন্ডো এবং নথিপত্রগুলি উপলভ্য নয়।
ভাদিম

স্রেফ কারণটি বের করেছিলাম। দেখে মনে হচ্ছে কোনও পিএসি ফাইল মজাদার জন্য উইন্ডোজ 7 আই 11 ব্যবহার করে না, যা আমার মেশিনে ইনস্টল করা হয়েছে, বরং আইআই 7 -র মতো ইঞ্জিন (সম্ভবত উইন্ডোজ হোস্ট থেকে)। সুতরাং err.toString () সেখানে "[অবজেক্টের ত্রুটি]" দেয় যখন আই 11 এর ভিতরে এটি আপনার কোডের মতো "সম্পত্তি পেতে অক্ষম ..." স্ট্রিং দেয়। সুতরাং, উপরের কোডটি আই 7 এর সাথে ব্যর্থ হওয়া উচিত।
ভাদিম

8

আপনি সবাই ধন্যবাদ. আমি সাম্প্রতিক ব্রাউজারগুলিতে কোড স্নিপেটগুলি এখানে পরীক্ষা করেছি: ক্রোম 55, ফায়ারফক্স 50, আইই 11 এবং এজ 38 এবং আমি নিম্নলিখিত সংমিশ্রণটি নিয়ে এসেছি যা তাদের সকলের জন্য আমার পক্ষে কাজ করেছে। আমি নিশ্চিত এটির উন্নতি হতে পারে তবে এটি যার প্রয়োজন তার পক্ষে এটি দ্রুত সমাধান:

var browser_name = '';
isIE = /*@cc_on!@*/false || !!document.documentMode;
isEdge = !isIE && !!window.StyleMedia;
if(navigator.userAgent.indexOf("Chrome") != -1 && !isEdge)
{
    browser_name = 'chrome';
}
else if(navigator.userAgent.indexOf("Safari") != -1 && !isEdge)
{
    browser_name = 'safari';
}
else if(navigator.userAgent.indexOf("Firefox") != -1 ) 
{
    browser_name = 'firefox';
}
else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
{
    browser_name = 'ie';
}
else if(isEdge)
{
    browser_name = 'edge';
}
else 
{
   browser_name = 'other-browser';
}
$('html').addClass(browser_name);

এটি ব্রাউজারের নাম সহ এইচটিএমএলে একটি সিএসএস ক্লাস যুক্ত করে।


আপনি কি আইওএস-এ ক্রোম পরীক্ষা করেছেন?
ভিক

8

কারও পক্ষে এটি দরকারী কিনা ধারণা নেই তবে এখানে টাইপস্ক্রিপ্টকে খুশি করার জন্য একটি বৈকল্পিক।

export function getBrowser() {

// Opera 8.0+
if ((!!window["opr"] && !!["opr"]["addons"]) || !!window["opera"] || navigator.userAgent.indexOf(' OPR/') >= 0) {
    return 'opera';
}

// Firefox 1.0+
if (typeof window["InstallTrigger"] !== 'undefined') {
    return 'firefox';
}

// Safari 3.0+ "[object HTMLElementConstructor]" 
if (/constructor/i.test(window["HTMLElement"]) || (function(p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof window["safari"] !== 'undefined' && window["safari"].pushNotification))) {
    return 'safari';
}

// Internet Explorer 6-11
if (/*@cc_on!@*/false || !!document["documentMode"]) {
    return 'ie';
}

// Edge 20+
if (!(/*@cc_on!@*/false || !!document["documentMode"]) && !!window["StyleMedia"]) {
    return 'edge';
}

// Chrome 1+
if (!!window["chrome"] && !!window["chrome"].webstore) {
    return 'chrome';
}

// Blink engine detection
if (((!!window["chrome"] && !!window["chrome"].webstore) || ((!!window["opr"] && !!["opr"]["addons"]) || !!window["opera"] || navigator.userAgent.indexOf(' OPR/') >= 0)) && !!window["CSS"]) {
    return 'blink';
}

}


শর্ত হিসাবে কেন আপনার "আইফেল" দিয়ে কিছু আইফএস রয়েছে?
যোনাতন নীড়

@ যোনাতননির আমি মনে করি এটি শর্তসাপেক্ষ সংকলন সনাক্ত করার জন্য বোঝানো হয়েছে: বিকাশকারী.মোজিলা.আর.ইন-
লুকাস আজেভেদো

5

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

আমি @ নিমেষ কোডে কিছু পরিবর্তন করেছি এখন এটি এজের জন্যও কাজ করছে এবং অপেরা ইস্যুটি স্থির হয়েছে:

function getBrowserName() {

    if ( navigator.userAgent.indexOf("Edge") > -1 && navigator.appVersion.indexOf('Edge') > -1 ) {
        return 'Edge';
    }
    else if( navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR') != -1 )
    {
        return 'Opera';
    }
    else if( navigator.userAgent.indexOf("Chrome") != -1 )
    {
        return 'Chrome';
    }
    else if( navigator.userAgent.indexOf("Safari") != -1)
    {
        return 'Safari';
    }
    else if( navigator.userAgent.indexOf("Firefox") != -1 ) 
    {
        return 'Firefox';
    }
    else if( ( navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true ) ) //IF IE > 10
    {
        return 'IE';
    }  
    else 
    {
        return 'unknown';
    }
}

ধন্যবাদ @ নিমেষ ব্যবহারকারী: 2063564


4

একটি কম "হ্যাকি" পদ্ধতিও রয়েছে যা সমস্ত জনপ্রিয় ব্রাউজারগুলির জন্য কাজ করে। গুগল তাদের বন্ধ লাইব্রেরিতে একটি ব্রাউজার-চেক অন্তর্ভুক্ত করেছে । বিশেষত, দেখুন goog.userAgentএবং goog.userAgent.product। এইভাবে, ব্রাউজারগুলি যেভাবে উপস্থাপিত হয় তাতে কিছু পরিবর্তন হয় (আপনি সর্বদা ক্লোজার সংকলনের সর্বশেষতম সংস্করণটি চালান given


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

4

আপনার যদি কিছু নির্দিষ্ট ব্রাউজারের সংখ্যাসূচক সংস্করণটি জানতে হয় তবে আপনি নীচের স্নিপেটটি ব্যবহার করতে পারেন। বর্তমানে এটি আপনাকে ক্রোম / ক্রোমিয়াম / ফায়ারফক্সের সংস্করণটি বলবে:

var match = $window.navigator.userAgent.match(/(?:Chrom(?:e|ium)|Firefox)\/([0-9]+)\./);
var ver = match ? parseInt(match[1], 10) : 0;

2

ইউআরপার্সার ইউজার এজেন্ট স্ট্রিং থেকে ব্রাউজার, ইঞ্জিন, ওএস, সিপিইউ এবং ডিভাইসের ধরণ / মডেল সনাক্ত করতে লাইটওয়েট জাভাস্ক্রিপ্ট লাইব্রেরির অন্যতম।

একটি সিডিএন রয়েছে। এখানে আমি ইউএপারসার ব্যবহার করে ব্রাউজার সনাক্ত করার জন্য একটি উদাহরণ কোড অন্তর্ভুক্ত করেছি।

<!doctype html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0/dist/ua-parser.min.js"></script>
<script type="text/javascript">
    var parser = new UAParser();
    var result = parser.getResult();
    console.log(result.browser);     // {name: "Chromium", version: "15.0.874.106"}
</script>
</head>
<body>
</body>
</html>

এখন আপনি result.browserশর্তসাপেক্ষে আপনার পৃষ্ঠায় প্রোগ্রাম করার মানটি ব্যবহার করতে পারেন ।

উত্স টিউটোরিয়াল: জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে ব্রাউজার, ইঞ্জিন, ওএস, সিপিইউ এবং ডিভাইস সনাক্ত করা যায়?


3
একটি হাজার কোড লাইনের আপনি লাইটওয়েট ডাকলে?
deathangel908

1
var BrowserDetect = {
        init: function () {
            this.browser = this.searchString(this.dataBrowser) || "Other";
            this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown";
        },
        searchString: function (data) {
            for (var i = 0; i < data.length; i++) {
                var dataString = data[i].string;
                this.versionSearchString = data[i].subString;

                if (dataString.indexOf(data[i].subString) !== -1) {
                    return data[i].identity;
                }
            }
        },
        searchVersion: function (dataString) {
            var index = dataString.indexOf(this.versionSearchString);
            if (index === -1) {
                return;
            }

            var rv = dataString.indexOf("rv:");
            if (this.versionSearchString === "Trident" && rv !== -1) {
                return parseFloat(dataString.substring(rv + 3));
            } else {
                return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
            }
        },

        dataBrowser: [
            {string: navigator.userAgent, subString: "Edge", identity: "MS Edge"},
            {string: navigator.userAgent, subString: "MSIE", identity: "Explorer"},
            {string: navigator.userAgent, subString: "Trident", identity: "Explorer"},
            {string: navigator.userAgent, subString: "Firefox", identity: "Firefox"},
            {string: navigator.userAgent, subString: "Opera", identity: "Opera"},  
            {string: navigator.userAgent, subString: "OPR", identity: "Opera"},  

            {string: navigator.userAgent, subString: "Chrome", identity: "Chrome"}, 
            {string: navigator.userAgent, subString: "Safari", identity: "Safari"}       
        ]
    };

    BrowserDetect.init();


    var bv= BrowserDetect.browser;
    if( bv == "Chrome"){
        $("body").addClass("chrome");
    }
    else if(bv == "MS Edge"){
     $("body").addClass("edge");
    }
    else if(bv == "Explorer"){
     $("body").addClass("ie");
    }
    else if(bv == "Firefox"){
     $("body").addClass("Firefox");
    }


$(".relative").click(function(){
$(".oc").toggle('slide', { direction: 'left', mode: 'show' }, 500);
$(".oc1").css({
   'width' : '100%',
   'margin-left' : '0px',
   });
});

0

এটি রবের মূল উত্তর এবং 2016 এর জন্য পিলাউয়ের আপডেট উভয়কেই একত্রিত করে

    var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
    // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
    // At least Safari 3+: "[object HTMLElementConstructor]"
var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
var output = 'Detecting browsers by ducktyping:<hr>';
output += 'isFirefox: ' + isFirefox + '<br>';
output += 'isChrome: ' + isChrome + '<br>';
output += 'isSafari: ' + isSafari + '<br>';
output += 'isOpera: ' + isOpera + '<br>';
output += 'isIE: ' + isIE + '<br>';
output += 'isIE Edge: ' + isEdge + '<br>';
document.body.innerHTML = output;

ব্যবহারকারীরা কী ব্রাউজারটি ব্যবহার করছেন তা বলার কোনও বিন্দু আছে? আমি ধারণা করি তারা ইতিমধ্যে এটি জানত।
হোল্ডঅফহ্যাঙ্গার

1
@ হোল্ডঅফ হ্যাঞ্জার এটির মূল উদ্দেশ্যটি ছিল সর্বাধিক সামঞ্জস্যপূর্ণ কোডটি সক্রিয় ব্রাউজারে অভিযোজিত করা, বরং তারা কোন ব্রাউজারটি ব্যবহার করছে তা ব্যবহারকারীকে অবহিত করা। তারা যে ব্রাউজারটি ব্যবহার করছে তা যদি পুরানো না হয়ে থাকে এবং ব্যাকওয়ার্সের সামঞ্জস্যতা থেকে বাদ না পড়ে তবে ব্যবহারকারীকে জানাতে ক্ষতি হবে না যে তারা আরও কিছু আপ-টু-ডেটে স্যুইচ করা উচিত যদি তারা আরও ভাল অভিজ্ঞতা থেকে উপকৃত হতে পারে
জো বর্গ

0

এটি আপনি কোন ব্রাউজারটি চলছে তা সন্ধান করুন।

function isValidBrowser(navigator){

            var isChrome =  navigator.indexOf('chrome'),
            isFireFox= navigator.indexOf('firefox'),
            isIE = navigator.indexOf('trident') ,
            isValidChromeVer = parseInt(navigator.substring(isChrome+7, isChrome+8)) >= 4,
            isValidFireForVer = parseInt(navigator.substring(isFireFox+8, isFireFox+9)) >= 3,
            isValidIEVer = parseInt(navigator.substring(isIE+8, isIE+9)) >= 7;

            if((isChrome > -1 && isValidChromeVer){ console.log("Chrome Browser")}

            if(isFireFox > -1 && isValidFireForVer){ console.log("FireFox  Browser")}

            if(isIE > -1 && isValidIEVer)){ console.log("IE Browser")}


        }

0

আমরা নীচে ব্যবহার পদ্ধতি ব্যবহার করতে পারেন

utils.isIE = function () {
        var ver = navigator.userAgent;
        return ver.indexOf("MSIE") !== -1 || ver.indexOf("Trident") !== -1; // need to check for Trident for IE11
    };

    utils.isIE32 = function () {
        return (utils.isIE() && navigator.appVersion.indexOf('Win64') === -1);
    };

    utils.isChrome = function () {
        return (window.chrome);
    };

    utils.isFF64 = function () {
        var agent = navigator.userAgent;
        return (agent.indexOf('Win64') >= 0 && agent.indexOf('Firefox') >= 0);
    };

    utils.isFirefox = function () {
        return (navigator.userAgent.toLowerCase().indexOf('firefox') > -1);
    };

0
const isChrome = /Chrome/.test(navigator.userAgent)
const isFirefox = /Firefox/.test(navigator.userAgent)

দুর্ভাগ্যক্রমে, এটি একটি ভাল উত্তর নয়। এজতে তার ব্যবহারকারী এজেন্ট বার্তায় ক্রোম রয়েছে। এটি ব্যবহার করা আরও ভাল !! উইন্ডো.ক্রোম && (!! উইন্ডো। ক্রোম.ওয়েবস্টোর || !! উইন্ডো.ক্রোম.আরুনটাইম);
প্রজেমো

-3

জাভাস্ক্রিপ্ট কোডের সরল, একক লাইন আপনাকে ব্রাউজারের নাম দেবে:

function GetBrowser()
{
    return  navigator ? navigator.userAgent.toLowerCase() : "other";
}

16
ইউজার এজেন্ট একা আমাদের যথেষ্ট বলে না। উদাহরণস্বরূপ, আমার ব্যবহারকারী এজেন্ট হলেন "মজিলা / 5.0 (ম্যাকিনটোস; ইন্টেল ম্যাক ওএস এক্স 10_10_4) অ্যাপলওয়েবকিট / 537.36 (কেএইচটিএমএল, গেকোর মতো) ক্রোম / 45.0.2454.85 সাফারি / 537.36", যা মজিলা, ক্রোম এবং সাফারি উল্লেখ করেছে। আমি কোন ব্রাউজারের ধরণ?

দুঃখিত তবে আমি "আপনি কোন ব্রাউজার ধরণের?" আপনি কি পেতে চান?
নীরভ মেহতা

1
@ নীরভমেহেতা তার অর্থ কী তা হ'ল এটি navigator.userAgentআপনার সম্ভাব্য প্রতিটি ব্রাউজারকে বলে দেয় .. সুতরাং এটি সত্যিই নির্ভরযোগ্য নয়, কেবলমাত্র যদি ব্যবহারকারীর কেবল একটি ব্রাউজার থাকে তবে এটি কাজ করবে।
বালদরনি

1
এটি ব্রাউজার সনাক্ত করার জন্য একটি নির্ভরযোগ্য উপায় নয়। কিছু ব্যবহারকারীর মধ্যে ক্রোম এবং সাফারি উভয়ই রয়েছে, সুতরাং কোনটি বিবেচনা করা উচিত এবং শেষ অবধি তা সনাক্ত করার উপায় নেই তবে সর্বনিম্ন নয়, ব্যবহারকারীর ওয়েবপৃষ্ঠায় পরিবর্তন করা যেতে পারে।
জুভেনিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.