সাফারি ব্রাউজারটি সনাক্ত করুন


142

জাভাস্ক্রিপ্ট ব্যবহার করে সাফারি ব্রাউজার কীভাবে সনাক্ত করবেন? আমি নীচে কোড চেষ্টা করেছি এবং এটি কেবল সাফারি নয় ক্রোম ব্রাউজারকে সনাক্ত করে।

function IsSafari() {

  var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
  return is_safari;

}

1
ফাইল জমা দেওয়ার সাথে সম্পর্কিত কিছু জেএস কোড সাফারির জন্য ডিফারেন্টালি কাজ করে, ক্রোমের জন্য দুর্দান্ত কাজ করে।
টমাস

1
আপনারা অবশ্যই অবশ্যই এপিআই-এর যে কোনও পার্থক্য রয়েছে তার জন্য পরীক্ষা করা উচিত। সাফারি এবং ক্রোমের বাইরে অন্য ওয়েবকিট ভিত্তিক ব্রাউজার রয়েছে।
কোয়ান্টিন

12
ব্রাউজারটি সনাক্ত করতে পারে এমন অনেকগুলি কারণ রয়েছে। উদাহরণস্বরূপ, এই লেখার হিসাবে এসভিজি ইঞ্জিনের কিছু দিক যেমন ফিল্টারগুলি সাফারিতে নষ্ট হয়ে গেছে তবে ক্রোমে কাজ করছে।
পল লেগাতো

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

উত্তর:


110

আপনি সহজেই Chrome কে ফিল্টার আউট করতে Chrome এর সূচক ব্যবহার করতে পারেন:

var ua = navigator.userAgent.toLowerCase(); 
if (ua.indexOf('safari') != -1) { 
  if (ua.indexOf('chrome') > -1) {
    alert("1") // Chrome
  } else {
    alert("2") // Safari
  }
}

6
কাজ করে না। বর্তমানে আইফোনে ক্রোম ইউএ স্ট্রিং আউটপুট করছে এবং এটিতে "ক্রোম" শব্দটি নেই।
পল কার্লটন

5
উইন্ডোজ 10-এ আইই 11 ইউএ স্ট্রিং-এ সাফারি এবং ক্রোম রয়েছে
14

ব্ল্যাকবেরিতে "সাফারি" অন্তর্ভুক্ত রয়েছে।
হ্যারি পেখোনেন

18
@ ফ্লিম ব্রাউজার সনাক্তকরণের জন্য বৈধ ব্যবহারের অনেকগুলি মামলা রয়েছে। প্রশ্নকারী বা উত্তরদাতার উদ্দেশ্য জানতে অনুমান করবেন না। আপনি যদি প্রাসঙ্গিক বলে মনে করেন এমন একটি সহায়ক টিপ অন্তর্ভুক্ত করা দুর্দান্ত তবে এটি কোনওভাবেই প্রয়োজন হয় না।
রুবেন মার্টিনেজ জুনিয়র

1
এটি অ্যান্ড্রয়েড ব্রাউজারগুলিতে কাজ করে না, যার মধ্যে "সাফারি" অন্তর্ভুক্ত রয়েছে তবে "ক্রোম" নেই: বিকাশকারীরা।
এরিক অ্যান্ড্রু লুইস

156

দ্রষ্টব্য: আপনি যে নির্দিষ্ট আচরণটি লক্ষ্য করার চেষ্টা করছেন তার পরিবর্তে এটি নির্দিষ্ট করার চেষ্টা করুনisSafari?

একটি শেষ অবলম্বন হিসাবে, এই রেজেক্সের সাহায্যে সাফারি সনাক্ত করুন:

var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);

এটি নেতিবাচক চেহারা ব্যবহার করে এবং এটি ক্রোম, এজ এবং সমস্ত Android ব্রাউজারগুলিকে বাদ দেয় যা Safariতাদের ব্যবহারকারী এজেন্টের মধ্যে নাম অন্তর্ভুক্ত করে ।


2
এটি কাজ করে না। আমি যদি আইফোনে ক্রোম ব্রাউজার ব্যবহার করি তবে আমি এখনও সত্য হয়ে উঠছি।
অজয়

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

বাবু আমার জন্য এই কাজ করেছে !!! ধন্যবাদ একটি টন .. নেভিগেটর.উজারএজেন্ট "5.0 (উইন্ডোজ এনটি 6.1) অ্যাপল ওয়েবেকিট / 537.36 (কেএইচটিএমএল, যেমন গেকোর মতো) ক্রোম / 39.0.2171.99 সাফারি / 537.36" ম্যাকের ক্রোম এবং সাফারি উভয়ের জন্য।
কৌস্তুভএসভি

2
এখনই স্থির। আপনি অবশ্যই ঠিক বলেছেন, প্রচুর ব্রাউজারের সমস্যা হ'ল এগুলি বাদ না দেওয়ার চেষ্টা করার জন্য তারা অন্যান্য নাম অন্তর্ভুক্ত করে। এজ এর মত সংযুক্ত আরব আমিরাতে ক্রোম এবং সাফারি উভয়ই অন্তর্ভুক্ত। ব্যবহারকারী এজেন্ট চেকগুলি এই কারণে খারাপ: ব্রাউজারগুলি পরিবর্তন হয় এবং চেকগুলি আপডেট করা দরকার। দুর্ভাগ্যক্রমে ব্রাউজার সনাক্ত করার কোনও সঠিক উপায় নেই, এটি সর্বদা অনুমান।
fregante

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

91

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

আপনি যদি এখনও এটি করতে চান এবং কোনও সাফারি সংস্করণ পরীক্ষা করতে চান তবে আমি এটি ব্যবহার করার পরামর্শ দিই

var isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&
               navigator.userAgent &&
               navigator.userAgent.indexOf('CriOS') == -1 &&
               navigator.userAgent.indexOf('FxiOS') == -1;

এটি সমস্ত ডিভাইস জুড়ে সাফারির যে কোনও সংস্করণ নিয়ে কাজ করবে: ম্যাক, আইফোন, আইপড, আইপ্যাড।

সম্পাদন করা

আপনার বর্তমান ব্রাউজারে পরীক্ষা করতে: https://jsfiddle.net/j5hgcbm2/

সম্পাদনা 2

আইওএসে ক্রোম সঠিকভাবে সনাক্ত করতে ক্রোম ডক্স অনুসারে আপডেট হয়েছে

এটি লক্ষণীয় যে আইওএসের সমস্ত ব্রাউজারগুলি কেবল সাফারির জন্য কেবল মোড়ক এবং একই ইঞ্জিনটি ব্যবহার করে। এই থ্রেডে তার নিজের উত্তর সম্পর্কে bfred.it এর মন্তব্য দেখুন।

সম্পাদনা 3

ফায়ারফক্স ডক্স অনুসারে আপডেট করা হয়েছে আইওএসে ফায়ারফক্সকে সঠিকভাবে সনাক্ত করতে


মন্তব্যের জন্য ধন্যবাদ
আইওএসে

@qingu - আমি এই জাভাস্ক্রিপ্ট বুঝতে পারছি না, আমি ভালো কিছু কিভাবে করতে হবে - যদি (safaribrowser) আর {এই কাজ} {যে} একই কোড কি মান 'Var isSafari' ধন্যবাদ ব্যবহার
GAV

@GAV: isSafariহতে হবে trueএকটি সাফারি ব্রাউজারে, falseঅন্যথায়। আপনি কেবল উপরের স্নিপেটটি ব্যবহার করতে পারেন এবং তারপরে আপনি এটি পোস্ট হিসাবে প্রায় ব্যবহার করতে পারেন। if (isSafari) { do_this(); } else { do_that(); }
কিঙ্গু

2
দুর্ভাগ্যক্রমে ব্রাউজারটি কেবল বৈশিষ্ট্য সনাক্তকরণের চেয়ে আরও বেশি কারণ খুঁজে বের করার চেষ্টা করার আরও অনেক কারণ রয়েছে more একটি ব্রাউজার কোনও বৈশিষ্ট্য সমর্থন করতে পারে তবে বগি হবে (উদাঃ আইই 10 তে ক্যানভাস বাগ, তবে একই বৈশিষ্ট্যটি আইই 9 তে কাজ করে)। এছাড়াও ফায়ারফক্স ওয়েবকিট ভিত্তিক ব্রাউজারগুলির চেয়ে আলাদা আচরণ করে, যেমন এটি মাউস চলাচলে কীভাবে প্রতিক্রিয়া জানায়। অ্যাপলের সাফারিটিতে রিফ্লো বাগ রয়েছে যা ক্রোমে নেই। কিছু ব্রাউজার অন্যদের তুলনায় কিছু গণনাগর্ভ নিবিড় কাজ করার সময়ও পারফরম্যান্স হয়।
ডেমিআইম্প

2
ফায়ারফক্সের জন্য @ অ্যান্ড্রাস আপনি && !navigator.userAgent.match('FxiOS')ক্রোম চেক - রেফ ( ডেভেলপার.মোজিলা.আর.ইন-
ইউএস / ডকস / ওয়েবে / এইচটিটিপি / হিয়ার্স / ইউজার- এজেন্ট/…

58

শুধু ব্যবহার করুন:

var isSafari = window.safari !== undefined;
if (isSafari) console.log("Safari, yeah!");

15
কেন এটি উচ্চতর হয় না তা নিশ্চিত নয় - এটি কি নিখুঁত, সংক্ষিপ্ত এবং সহজ। আমার অভাবের জন্য ডেস্কটপ সাফারি বাতিল করতে হবে getUserMedia
স্টিফেন টেট্রোল্ট

3
এটি ডেস্কটপ সাফারি নির্ধারণ করার সঠিক উপায় কারণ এটি মোবাইলে কাজ করে না
Godblessstrawberry

এই সাফারি কোন সংস্করণে কাজ করে? V5.1.7 এর জন্য কাজ করছে বলে মনে হচ্ছে না
এলিওটস্মেলিয়ট

আপনি যদি কেবল ব্রাউজারগুলির বিষয়ে চিন্তা করেন, এবং মোবাইল বনাম ডেস্কটপ না থেকে, এটি পুরোপুরি কার্যকর হয়।
আন্তুয়ান

1
এটি আইফোন 11 প্রো ম্যাক্স সিমুলেটর 13.5
ক্রিশ্চান ভ্যালেন্টিন

19

এই কোডটি কেবল সাফারি ব্রাউজার সনাক্ত করতে ব্যবহৃত হয়

if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0) 
{
   alert("Browser is Safari");          
}

4
এই কোডটি কেবলমাত্র একটি ওয়েবকিট ব্রাউজার ক্রোম নয় এমনটি সনাক্ত করে। অন্যান্য অনেক ব্রাউজারের তাদের ব্যবহারকারী এজেন্ট স্ট্রিংয়ে "সাফারি" অন্তর্ভুক্ত করার খারাপ ধারণা রয়েছে have : উদাহরণস্বরূপ, অপেরা জন্য Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36 OPR/24.0.1558.51 (Edition Next), অথবা শেয়ার অ্যান্ড্রয়েড ব্রাউজার:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24
rupps

টসিং প্ল্যাটফর্ম সনাক্তকরণ সম্ভবত নির্দিষ্ট সামঞ্জস্যের কেসগুলি ফিল্টার করতে পারে।
ljgww

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

সুতরাং এটি কেবল ক্রোম সনাক্ত করবে। এবং তবুও, আমি স্রেফ খুঁজে পেয়েছি যে ক্রোম 44 এর আরব আমিরাতে ক্রোম নেই, তবে এর পরিবর্তে 'ক্রাইওএস' রয়েছে :(
ম্যাচ ম্যাচ

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

12

ক্রোম এবং সাফারির জন্য ব্যবহারকারী এজেন্ট প্রায় একইরকম কারণ ব্রাউজারটির বিক্রেতার দিকে নজর দেওয়া সহজ হতে পারে

আফ্রিকায় শিকার অভিযান

navigator.vendor ==  "Apple Computer, Inc."

ক্রৌমিয়াম

navigator.vendor ==  "Google Inc."

ফায়ারফক্স (এটি খালি কেন?)

navigator.vendor ==  ""

আইই (কেন এটি অপরিজ্ঞাত?)

navigator.vendor ==  undefined

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

তবে আইওএস-এ ক্রোমের বিক্রেতা হবেন "অ্যাপল কম্পিউটার, ইনক।" দুঃখিত ...
পাইটর কোওলস্কি

@ পাইওটরকোয়ালস্কি - আপনি কোন সমাধানটি দিয়েছিলেন?
টাইলারলিন্ডেল

@tylerlindell এই পৃষ্ঠার নীচে "সংস্করণ" শব্দটির সাথে আমার উত্তরটি দেখুন।
পাইটর কোওলস্কি

7

কেবল সাফারি হ'ল ক্রোম:

অন্যদের কোড চেষ্টা করার পরে আমি সাফারির নতুন এবং পুরাতন সংস্করণগুলির সাথে কাজ করে এমন কোনওটি পেলাম না।

অবশেষে, আমি এই কোডটি করেছি যা আমার পক্ষে খুব ভালভাবে কাজ করছে:

var ua = navigator.userAgent.toLowerCase(); 
var isSafari = false;
try {
  isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
}
catch(err) {}
isSafari = (isSafari || ((ua.indexOf('safari') != -1)&& (!(ua.indexOf('chrome')!= -1) && (ua.indexOf('version/')!= -1))));

//test
if (isSafari)
{
  //Code for Safari Browser (Desktop and Mobile)
  document.getElementById('idbody').innerHTML = "This is Safari!";
}
else
{
  document.getElementById('idbody').innerHTML = "Not is Safari!";
}
<body id="idbody">
</body>


5

আমি পর্যবেক্ষণ করেছি যে একটি শব্দই সাফারি - "সংস্করণ" কে পৃথক করে। সুতরাং এই রেজেক্স নিখুঁতভাবে কাজ করবে:

/.*Version.*Safari.*/.test(navigator.userAgent)

5

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

<script>
    let browserName = "";

    if(navigator.vendor.match(/google/i)) {
        browserName = 'chrome/blink';
    }
    else if(navigator.vendor.match(/apple/i)) {
        browserName = 'safari/webkit';
    }
    else if(navigator.userAgent.match(/firefox\//i)) {
        browserName = 'firefox/gecko';
    }
    else if(navigator.userAgent.match(/edge\//i)) {
        browserName = 'edge/edgehtml';
    }
    else if(navigator.userAgent.match(/trident\//i)) {
        browserName = 'ie/trident';
    }
    else
    {
        browserName = navigator.userAgent + "\n" + navigator.vendor;
    }
    alert(browserName);
</script>

স্পষ্ট করা:

  • আইওএসের অধীনে সমস্ত ব্রাউজারগুলি "সাফারি / ওয়েবকিট" হিসাবে প্রতিবেদন করা হবে
  • অ্যান্ড্রয়েড তবে ফায়ারফক্সের অধীনে সমস্ত ব্রাউজারগুলি "ক্রোম / ঝলক" হিসাবে প্রতিবেদন করা হবে
  • ক্রোম, অপেরা, ব্লিস্ক, ভিভালদি ইত্যাদি সমস্ত উইন্ডোজ, ওএস এক্স বা লিনাক্সের অধীনে "ক্রোম / ঝলক" হিসাবে প্রতিবেদন করা হবে

4

আমি এটি ব্যবহার করি

function getBrowserName() {
    var name = "Unknown";
    if(navigator.userAgent.indexOf("MSIE")!=-1){
        name = "MSIE";
    }
    else if(navigator.userAgent.indexOf("Firefox")!=-1){
        name = "Firefox";
    }
    else if(navigator.userAgent.indexOf("Opera")!=-1){
        name = "Opera";
    }
    else if(navigator.userAgent.indexOf("Chrome") != -1){
        name = "Chrome";
    }
    else if(navigator.userAgent.indexOf("Safari")!=-1){
        name = "Safari";
    }
    return name;   
}

if( getBrowserName() == "Safari" ){
    alert("You are using Safari");
}else{
    alert("You are surfing on " + getBrowserName(name));
}

4

সহজ উত্তর:

function isSafari() {
 if (navigator.vendor.match(/[Aa]+pple/g).length > 0 ) 
   return true; 
 return false;
}

2
এটি কাজ করে, যদিও navigator.vendor.toLowerCase().indexOf('apple') > -1
রেজিপক্স

5
এমনকি সহজ ... if (navigator.vendor.match(/apple/i)) { ... }
ব্র্যাড

এটি ফায়ারফক্সে আইওএস 13.3.1 এর জন্য কাজ করে না কারণ এটি অ্যাপল কম্পিউটার দেখায়, ইন
নিউটিনিবলগুলি

1
@ ন্যাটিনিবলস: এটি সম্ভবত আপনি চান কারণ আইওএসের প্রতিটি ব্রাউজার ছদ্মবেশে একটি সাফারি।
ওয়ার্ল্ড ওয়ার্ট

3

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

const isSafari = window['safari'] && safari.pushNotification &&
    safari.pushNotification.toString() === '[object SafariRemoteNotification]';

অবশ্যই, ব্রাউজার-নির্দিষ্ট সমস্যাগুলির সাথে মোকাবিলা করার সর্বোত্তম উপায় হ'ল যদি সম্ভব হয় তবে বৈশিষ্ট্য-সনাক্তকরণ করা। উপরের মত কোডটির একটি অংশ ব্যবহার করা এজেন্ট স্ট্রিং সনাক্তকরণের চেয়ে এখনও ভাল।


1
এটি আইফোন ওএস 13_4_1 এ সাফারি সংস্করণ / 13.1 মোবাইল / 15E148 সাফারি / 604.1 এর সাথে কাজ করে না।
মন এডো

2

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

function isSafari() {
    var ua = window.navigator.userAgent;
    var iOS = !!ua.match(/iP(ad|od|hone)/i);
    var hasSafariInUa = !!ua.match(/Safari/i);
    var noOtherBrowsersInUa = !ua.match(/Chrome|CriOS|OPiOS|mercury|FxiOS|Firefox/i)
    var result = false;
    if(iOS) { //detecting Safari in IOS mobile browsers
        var webkit = !!ua.match(/WebKit/i);
        result = webkit && hasSafariInUa && noOtherBrowsersInUa
    } else if(window.safari !== undefined){ //detecting Safari in Desktop Browsers
        result = true;
    } else { // detecting Safari in other platforms
        result = hasSafariInUa && noOtherBrowsersInUa
    }
    return result;
}

1

উপরের উত্তরের জন্য পরিবর্তিত রেজেক্স

var isSafari = /^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent);
  • ক্রিয়োস - ক্রোম
  • fxios - ফায়ারফক্স

1

এই অনন্য "ইস্যু" 100% সাইন ইন যে ব্রাউজারটি সাফারি (বিশ্বাস করুন বা নাও)।

if (Object.getOwnPropertyDescriptor(Document.prototype, 'cookie').descriptor === false) {
   console.log('Hello Safari!');
}

এর অর্থ হ'ল কুকি অবজেক্ট বর্ণনাকারী সাফারিতে মিথ্যা হিসাবে সেট করা হয়েছে অন্যদিকে সমস্ত সত্য, যা অন্য প্রকল্পে আমাকে মাথা ব্যথা দেয়। শুভ কোডিং!


আর সত্য বলে মনে হচ্ছে না। ফায়ারফক্সে ক্র্যাশও হয়েছে "অবজেক্ট.জেটআউটনপ্রোপার্টিডেস্কিটার (...)
অপরিজ্ঞাত করা আছে

0

সম্ভবত এটি কাজ করে:

Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor')

সম্পাদনা: কোনও দীর্ঘ কাজ নেই


ঠিক কী করছে এটি, কারণ সমস্ত ব্রাউজারে -1 ফিরুন?
পেট্রফ

@ পেটারফ এটি আর নতুন সাফারিতে কাজ করছে না। এটা ইশারা জন্য ধন্যবাদ।
হর্ষাল কার্পেন্টার

2
উত্তর মুছে ফেলতে নির্দ্বিধায়।
ফ্লিম

0

আমি একটি ফাংশন তৈরি করি যা বুলিয়ান প্রকারটি ফেরত দেয়:

export const isSafari = () => navigator.userAgent.toLowerCase().indexOf('safari') !== -1

-2

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

সুতরাং আমরা বৈশিষ্ট্য শনাক্তকরণের সাথে গিয়েছিলাম, যেমনটি আজকের মতো দেখায়, serviceWorkerকেবল সাফারিতেই সমর্থিত, আইওএসের কোনও ব্রাউজারে নয়। Https://jakearchibald.github.io/isserviceworkerready/ এ যেমন বলা হয়েছে

সমর্থন প্ল্যাটফর্মে তৃতীয় পক্ষের ব্রাউজারগুলির আইওএস সংস্করণ অন্তর্ভুক্ত করে না (সাফারি সমর্থন দেখুন)।

সুতরাং আমরা কিছু মত

if ('serviceWorker' in navigator) {
    return 'Safari';
}
else {
    return 'Other Browser';
}

দ্রষ্টব্য : MacOS এ সাফারি তে পরীক্ষা করা হয়নি।

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