Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> HTML

HTML Navigator product प्रॉपर्टी: ब्राउज़र इंजन नाम


HTML Navigator product प्रॉपर्टी ब्राउज़र के रेंडरिंग इंजन का नाम लौटाती है। ऐतिहासिक कारणों से, लगभग सभी आधुनिक ब्राउज़र "Gecko" लौटाते हैं (फायरफॉक्स का इंजन), भले ही वे अलग इंजन का उपयोग करते हों (Chrome/Edge: Blink, Safari: WebKit)। यह प्रॉपर्टी विरासत संगतता के लिए है और वास्तविक इंजन पहचान के लिए विश्वसनीय नहीं है।

सिंटैक्स (Syntax)

navigator.product

उदाहरण (Example)

यह उदाहरण product प्रॉपर्टी दिखाता है और वास्तविक इंजन पहचान के तरीके बताता है।

<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      color: #000;
      height: 100vh;
      background: linear-gradient(62deg, #FBAB7E 0%, #F7CE68 100%) no-repeat;
      text-align: center;
      font-family: Arial, sans-serif;
    }
    .btn {
      background: #db133a;
      border: none;
      height: 2.5rem;
      border-radius: 20px;
      width: 330px;
      display: block;
      color: #fff;
      outline: none;
      cursor: pointer;
      margin: 1.5rem auto;
      font-size: 1rem;
      transition: background 0.3s;
    }
    .btn:hover { background: #b01030; }
    .show {
      font-size: 1.2rem;
      color: #fff;
      margin-top: 1rem;
      background: rgba(0,0,0,0.3);
      padding: 1.5rem;
      border-radius: 10px;
      display: inline-block;
      min-width: 300px;
      text-align: left;
    }
    .engine-name {
      font-size: 1.8rem;
      font-weight: bold;
      color: #ffeb3b;
      font-family: monospace;
    }
    .engine-table {
      margin: 2rem auto;
      max-width: 600px;
      text-align: left;
      background: rgba(255,255,255,0.1);
      padding: 1.5rem;
      border-radius: 10px;
      color: #fff;
    }
    .engine-table table { width: 100%; border-collapse: collapse; }
    .engine-table th, .engine-table td { padding: 0.5rem; border-bottom: 1px solid rgba(255,255,255,0.2); }
    .engine-table th { color: #ffeb3b; }
  </style>
</head>
<body>
  <h1>HTML Navigator product प्रॉपर्टी डेमो</h1>
  <button class="btn" onclick="showEngine()">ब्राउज़र इंजन नाम दिखाएं</button>
  <div class="show" id="engineDisplay"></div>

  <div class="engine-table">
    <h3>🔍 वास्तविक ब्राउज़र इंजन पहचान</h3>
    <table>
      <thead>
        <tr><th>ब्राउज़र</th><th>वास्तविक इंजन</th><th>navigator.product</th><th>पहचान विधि</th></tr>
      </thead>
      <tbody>
        <tr><td>Chrome / Edge (79+)</td><td>Blink</td><td>Gecko</td><td>userAgent में "Chrome/" या "Edg/"</td></tr>
        <tr><td>Firefox</td><td>Gecko</td><td>Gecko</td><td>userAgent में "Firefox/"</td></tr>
        <tr><td>Safari</td><td>WebKit</td><td>Gecko</td><td>userAgent में "Safari/" (बिना Chrome)</td></tr>
        <tr><td>Opera (नया)</td><td>Blink</td><td>Gecko</td><td>userAgent में "OPR/"</td></tr>
        <tr><td>IE / Edge (Legacy)</td><td>Trident / EdgeHTML</td><td>Gecko</td><td>userAgent में "Trident/" या "Edge/"</td></tr>
      </tbody>
    </table>
    <p><strong>निष्कर्ष:</strong> navigator.product विश्वसनीय नहीं है। userAgent या फीचर डिटेक्शन का उपयोग करें।</p>
  </div>

  <script>
    function showEngine() {
      const product = navigator.product;
      const userAgent = navigator.userAgent;
      
      // वास्तविक इंजन का पता लगाएं
      let realEngine = 'अज्ञात';
      if (userAgent.includes('AppleWebKit/') && userAgent.includes('Chrome/') && !userAgent.includes('Edg/')) {
        realEngine = 'Blink (Chrome/Chromium)';
      } else if (userAgent.includes('Edg/')) {
        realEngine = 'Blink (Edge)';
      } else if (userAgent.includes('Firefox/')) {
        realEngine = 'Gecko (Firefox)';
      } else if (userAgent.includes('AppleWebKit/') && !userAgent.includes('Chrome/')) {
        realEngine = 'WebKit (Safari)';
      } else if (userAgent.includes('Trident/')) {
        realEngine = 'Trident (IE)';
      } else if (userAgent.includes('Edge/')) {
        realEngine = 'EdgeHTML (Legacy Edge)';
      }
      
      document.getElementById('engineDisplay').innerHTML = `
        <p>navigator.product: <span class="engine-name">${product}</span></p>
        <p>पता चला वास्तविक इंजन: <span class="engine-name">${realEngine}</span></p>
        <p><small>userAgent: ${userAgent.substring(0, 80)}...</small></p>
      `;
    }
  </script>
</body>
</html>

आउटपुट (Output)

"ब्राउज़र इंजन नाम दिखाएं" बटन पर क्लिक:

HTML Navigator product प्रॉपर्टी: ब्राउज़र इंजन नाम

परिणाम (लगभग हमेशा "Gecko"):

HTML Navigator product प्रॉपर्टी: ब्राउज़र इंजन नाम

तकनीकी विवरण

क्यों "Gecko"?

नेटस्केप/मोज़िला के Gecko इंजन ने 2000 के दशक की शुरुआत में वेब मानकों का नेतृत्व किया। अन्य ब्राउज़र्स ने संगतता के लिए "Gecko" घोषित किया ताकि वेबसाइट्स उन्हें "मानक-अनुपालक" मानें और उन्नत फीचर्स सक्षम करें। यह User-Agent स्ट्रिंग में "Mozilla/5.0" और "like Gecko" टोकन के समान पैटर्न है।

मानक विनिर्देश

HTML Living Standard के अनुसार, navigator.product को संगतता के लिए "Gecko" लौटाना चाहिए।

वास्तविक इंजन पहचान के विश्वसनीय तरीके

1. User-Agent पार्सिंग (क्लाइंट-साइड)

function getEngine() {
  const ua = navigator.userAgent;
  if (ua.includes('Edg/')) return 'Blink (Edge)';
  if (ua.includes('Chrome/') || ua.includes('CriOS/')) return 'Blink (Chrome)';
  if (ua.includes('Firefox/') || ua.includes('FxiOS/')) return 'Gecko (Firefox)';
  if (ua.includes('Safari/') && !ua.includes('Chrome/')) return 'WebKit (Safari)';
  if (ua.includes('Trident/') || ua.includes('MSIE')) return 'Trident (IE)';
  return 'अज्ञात';
}

2. User-Agent Client Hints (आधुनिक, संरचित)

if ('userAgentData' in navigator) {
  const brands = navigator.userAgentData.brands;
  // brands में ब्रांड और संस्करण की सरणी होती है
  // उदा: [{brand: "Chromium", version: "120"}, {brand: "Google Chrome", version: "120"}]
  // इंजन निष्कर्ष: Chromium → Blink, WebKit → WebKit, Gecko → Gecko
}

3. फीचर डिटेक्शन (सर्वोत्तम - इंजन के बजाय क्षमता जांचें)

// इंजन जांचने के बजाय, आवश्यक फीचर जांचें
const supportsWebP = document.createElement('canvas').toDataURL('image/webp').startsWith('data:image/webp');
const supportsAVIF = document.createElement('canvas').toDataURL('image/avif').startsWith('data:image/avif');
const supportsWebGL2 = !!document.createElement('canvas').getContext('webgl2');

संबंधित प्रॉपर्टीज

प्रॉपर्टी विवरण विश्वसनीयता
product इंजन नाम (हमेशा "Gecko") कम
appCodeName कोड नाम (हमेशा "Mozilla") कम
appName आधिकारिक नाम (आमतौर पर "Netscape") कम
userAgent पूर्ण पहचान स्ट्रिंग मध्यम (पार्सेबल, स्पूफेबल)
userAgentData संरचित ब्रांड/संस्करण डेटा उच्च (आधुनिक, गोपनीयता-सचेत)

ब्राउज़र समर्थन

सभी ब्राउज़र (Chrome 1+, Firefox 1+, Safari 1+, Edge 12+, IE 4+, Opera 3+)।


  1. HTML Navigator userAgent प्रॉपर्टी: ब्राउज़र पहचान स्ट्रिंग HTML Navigator userAgent प्रॉपर्टी: ब्राउज़र पहचान स्ट्रिंग

    HTML Navigator userAgent प्रॉपर्टी ब्राउज़र द्वारा सर्वर को भेजे जाने वाले User-Agent HTTP हेडर का मान लौटाती है। इसमें ब्राउज़र नाम, संस्करण, रेंडरिंग इंजन, ऑपरेटिंग सिस्टम, और डिवाइस जानकारी शामिल होती है। नोट: यह स्ट्रिंग स्पूफ करने योग्य है और पार्स करना जटिल है; आधुनिक विकल्प navigator.userAge

  1. HTML Navigator platform प्रॉपर्टी: ब्राउज़र प्लेटफ़ॉर्म जानकारी HTML Navigator platform प्रॉपर्टी: ब्राउज़र प्लेटफ़ॉर्म जानकारी

    HTML Navigator platform प्रॉपर्टी ब्राउज़र के संकलन प्लेटफ़ॉर्म (ऑपरेटिंग सिस्टम और आर्किटेक्चर) को दर्शाने वाली एक स्ट्रिंग लौटाती है। यह navigator.userAgent से OS जानकारी निकालने का सरल विकल्प है, लेकिन मानकीकृत नहीं है और मान ब्राउज़र/OS संयोजन के अनुसार भिन्न हो सकते हैं। सिंटैक्स (Syntax) nav

  1. HTML Navigator onLine प्रॉपर्टी: ऑनलाइन/ऑफलाइन स्थिति जांचें HTML Navigator onLine प्रॉपर्टी: ऑनलाइन/ऑफलाइन स्थिति जांचें

    HTML Navigator onLine प्रॉपर्टी एक बूलियन मान लौटाती है जो दर्शाता है कि ब्राउज़र नेटवर्क से जुड़ा है या नहीं (true = ऑनलाइन, false = ऑफलाइन)। यह प्रोग्रेसिव वेब ऐप्स (PWA), ऑफलाइन-फर्स्ट आर्किटेक्चर, और नेटवर्क स्थिति UI के लिए महत्वपूर्ण है। संबंधित इवेंट्स: online और offline। सिंटैक्स (Syntax)