जावास्क्रिप्ट या jQuery के साथ मैक ओएस एक्स या विंडोज कंप्यूटर का पता लगाने का सबसे अच्छा तरीका है


110

इसलिए मैं उपयोगकर्ता को मैक पर और दाईं ओर पीसी पर "दाईं ओर" बटन को बाईं ओर ले जाने का प्रयास कर रहा हूं। अब मैं इसे उपयोगकर्ता एजेंट की जांच करके कर रहा हूं, लेकिन यह विश्वसनीय ओएस पता लगाने के लिए बहुत आसानी से खराब हो सकता है। क्या यह पता लगाने का एक निश्चित तरीका है कि जिस ओएस पर ब्राउज़र चल रहा है वह मैक ओएस एक्स या विंडोज है या नहीं? यदि नहीं, तो उपयोगकर्ता एजेंट को सूँघने से बेहतर क्या है?


20
यदि उपयोगकर्ता useragent में हेरफेर करता है, तो क्या उसकी समस्या नहीं है? मैं इसके बारे में चिंता करूँगा जब यह आपके लिए एक अमान्य उपयोगकर्ता के लिए दर्द होता है (जैसे जब यह उन्हें किसी ऐसी चीज तक पहुंच प्रदान करता है जो आप उन्हें नहीं चाहते हैं), लेकिन इस तरह से कुछ के लिए, आप क्यों जोर दे रहे हैं? उन्हें पैर में खुद को गोली मारने दें और परिणाम से निपटना होगा - अपनी पीठ से कोई पसीना नहीं, दोस्त।
महमूद अल-कुद्सी

ठीक है, एक उत्तर की तुलना में अधिक टिप की तरह। आप सशर्त टिप्पणियों के साथ IE का पता लगा सकते हैं। यह विंडोज़ डिटेक्शन शस्त्रागार के लिए +1 है। लेकिन यह विफल हो जाएगा यदि IE किसी अन्य ओएस (जैसे वाइन लिनक्स पर) में एक एमुलेटर में चलाया जाता था। वैसे, लिनक्स के बारे में कैसे?
जोसफ

@ MahmoudAl-Qudsi बिना स्पूफिंग के भी, मोबाइल फ़ायरफ़ॉक्स अक्सर सफारी का दिखावा करता है, ओपेरा अक्सर इसका दावा करता है कि कुछ संस्करणों में यह फ़ायरफ़ॉक्स है। उपयोगकर्ता एजेंट को खराब किए बिना अभी भी बहुत अविश्वसनीय है।
alt

संभावित डुप्लिकेट: stackoverflow.com/q/7044944/55209
आर्टेम कोशेलेव

लेकिन उस सवाल का जवाब सिर्फ "उपयोगकर्ता एजेंट" है।
alt

जवाबों:


192

Window.navigator.platform संपत्ति जाली नहीं है जब userAgent स्ट्रिंग बदल जाता है। मैं अपने मैक पर परीक्षण किया अगर मैं iPhone या क्रोम विंडोज के लिए userAgent बदल, navigator.platform MacIntel रहता है।

जब userAgent string बदली जाती है, तो navigator.platform खराब नहीं होता है

संपत्ति भी केवल पढ़ने के लिए है

navigator.platform केवल-पढ़ने के लिए है


मैं निम्नलिखित तालिका के साथ आ सकता है

मैक कंप्यूटर

Mac68K Macintosh 68K प्रणाली।
MacPPC Macintosh PowerPC प्रणाली।
MacIntel Macintosh इंटेल सिस्टम।

iOS डिवाइस

iPhone आई - फ़ोन।
iPod आइपॉड टच।
iPad आईपैड।


आधुनिक मैक लौटते हैं navigator.platform == "MacIntel"लेकिन कुछ "भविष्य के प्रमाण" देने के लिए सटीक मिलान का उपयोग नहीं करते हैं, उम्मीद है कि वे भविष्य में कुछ MacARMया कुछ बदल जाएंगे MacQuantum

var isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;

IOS को शामिल करने के लिए जो "बाईं ओर" का भी उपयोग करता है

var isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
var isIOS = /(iPhone|iPod|iPad)/i.test(navigator.platform);


चूंकि अधिकांश OS दाईं ओर बंद बटन का उपयोग करते हैं, आप उपयोगकर्ता के मैकलेक ओएस पर होने पर बस बाईं ओर करीब बटन को स्थानांतरित कर सकते हैं, अन्यथा यदि आप इसे सबसे आम पक्ष, दाईं ओर रखते हैं तो कोई समस्या नहीं है।

setTimeout(test, 1000); //delay for demonstration

function test() {

  var mac = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);

  if (mac) {
    document.getElementById('close').classList.add("left");
  }
}
#window {
  position: absolute;
  margin: 1em;
  width: 300px;
  padding: 10px;
  border: 1px solid gray;
  background-color: #DDD;
  text-align: center;
  box-shadow: 0px 1px 3px #000;
}
#close {
  position: absolute;
  top: 0px;
  right: 0px;
  width: 22px;
  height: 22px;
  margin: -12px;
  box-shadow: 0px 1px 3px #000;
  background-color: #000;
  border: 2px solid #FFF;
  border-radius: 22px;
  color: #FFF;
  text-align: center;
  font: 14px"Comic Sans MS", Monaco;
}
#close.left{
  left: 0px;
}
<div id="window">
  <div id="close">x</div>
  <p>Hello!</p>
  <p>If the "close button" change to the left side</p>
  <p>you're on a Mac like system!</p>
</div>

http://www.nczonline.net/blog/2007/12/17/don-t-forget-navigator-platform/


3
@ Vitim.us विस्तृत जवाब के लिए बहुत बहुत धन्यवाद, आपने वास्तव में मेरा दिन बचा लिया :)
vivekkupadhyay

7
इसे पदावनत नहीं किया जाता है। developer.mozilla.org/en-US/docs/Web/API/NavigatorID/…
Vitim.us

1
MacQuantum ने मेरा दिन बना दिया। 😂
😂होर में

प्लेटफ़ॉर्म प्रॉपर्टी केवल-पढ़ने के लिए है, लेकिन अभी भी इसे
बिगाड़ना

1
@Qix एक बेहतर सुधार के str.match(regexp) ? true : falseसाथ बदलना होगा regexp.test(string)RegExp.prototype.test()विधि मूल रूप से एक बूलियन देता है। इस प्रकार, मेरा पसंदीदा कोड है const platformIsMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
रोरी ओ'केन

52

यह इतना सरल है:

function isMacintosh() {
  return navigator.platform.indexOf('Mac') > -1
}

function isWindows() {
  return navigator.platform.indexOf('Win') > -1
}

आप मज़ेदार चीज़ें कर सकते हैं जैसे:

var isMac = isMacintosh();
var isPC = !isMacintosh();

1
खैर, यह दो ऑपरेटिंग सिस्टम को कवर करता है। यहां एक अधिक व्यापक (लेकिन संभवतः अभी भी अपूर्ण) सूची है, जिसमें लिनक्स, बीएसडी, एंड्रॉइड, पाम, सोनी
प्लेस्टोरेशन

यदि आप अधिक ऑपरेटिंग सिस्टम को कवर करना चाहते हैं, तो आपको एक लाइब्रेरी के लिए जाना चाहिए जैसे Platform.js: github.com/bestiejs/platform.js
Benny Neugebauer

@ बेनीइजेनबॉयर के isPCबराबर नहीं होना चाहिए !isMacintosh();। क्या होगा यदि उपयोगकर्ता लिनक्स या किसी अन्य अलग मंच पर है? यह पता लगाएगा कि वे मैक पर नहीं हैं और सोचते हैं कि वे पीसी पर हैं।
रहस्यमयी

@ EternalDarknessThat के कारण मैंने इसे isPC(और नहीं isWindowsया isLinux) कहा क्योंकि लिनक्स पीसी पर चलता है लेकिन मैकओएस केवल मैक पर चलता है।
बेनी न्युगबॉएर

5

क्या यह वही है आप जिसकी तलाश में हैं? अन्यथा, मुझे बताएं और मैं इस पोस्ट को हटा दूंगा।

इस jQuery प्लगइन का प्रयास करें: http://archive.plugins.jquery.com/project/client-detect

डेमो: http://www.stoimen.com/jquery.client.plugin/

यह quirksmode BrowserDetect पर आधारित है जो jQuery ब्राउज़र / OS डिटेक्शन प्लगइन के लिए एक रैप है।

उत्सुक पाठकों के लिए:
http://www.stoimen.com/blog/2009/07/16/jquery-browser-and-os-detection-plugin/
http://www.quirksmode.org/js/support.html

और प्लगइन के आसपास अधिक कोड यहाँ रहता है: http://www.stoimen.com/jquery.client.plugin/jquery.client.js


2
यार! मैंने अपने उपयोगकर्ता एजेंट को खराब कर दिया और इसने मुझे अभी भी मैक के लिए सफारी का पता लगाया! धन्यवाद BRUV
alt

1
@JacksonGariety कोई चिंता नहीं bruv :)) आगे का विवरण पढ़ते हुए यहां पूरा कोड याद दिलाया गया है :) stoimen.com/jquery.client.plugin/jquery.client.js एक अच्छा एक बिटिया है :) चीयर्स!
Tats_innit

@Derek hiya bruv - यह quirkmode ब्राउज़र प्लगइन का उपयोग करता है और ब्राउज़र / os के लिए पता लगाता है यहाँ quirksmode.org/js/detect.html और आगे stoimen.com/jquery.client.plugin/jquery.client.js & quirksmode.org देखें। /js/support.html आशा है कि यह समझ में आता है :)
Tats_innit

कोई बात नहीं, यह सिर्फ उपयोगकर्ता एजेंटों का उपयोग करने के लिए प्रतीत होता है ... कि थोड़े बेकार है।
alt

1
नहीं वास्तव में जवाब मैं देख रहा हूँ। क्या यह भी संभव है?
alt

0

अगर यह कार्यशील है, तो मुझे बताएं। StackOverflow.com की मदद से Apple डिवाइस (मैक कंप्यूटर, iPhones, इत्यादि) का पता लगाने का तरीका :
आज के रूप में navigator.platform के संभावित मूल्यों की सूची क्या है?

var deviceDetect = navigator.platform;
var appleDevicesArr = ['MacIntel', 'MacPPC', 'Mac68K', 'Macintosh', 'iPhone', 
'iPod', 'iPad', 'iPhone Simulator', 'iPod Simulator', 'iPad Simulator', 'Pike 
v7.6 release 92', 'Pike v7.8 release 517'];

// If on Apple device
if(appleDevicesArr.includes(deviceDetect)) {
    // Execute code
}
// If NOT on Apple device
else {
    // Execute code
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.