2010-02-04 29 views
7

क्या कोई तरीका है कि मैं यह बता सकता हूं कि मेरी साइट को वेबब्रोसर नियंत्रण के उदाहरण से एक्सेस किया जा रहा है या नहीं? क्या उपयोगकर्ता एजेंट w/php द्वारा इसे पहचानना संभव होगा? या शायद कुछ जावास्क्रिप्ट हैक? या यह सर्वर पक्ष से नियमित आईई के लिए 100% समान है?वेबब्रोसर नियंत्रण का पता लगाएं

+0

यह _is_ आईई है। जहां तक ​​मुझे पता है, यह वही कोड है। –

+1

"इंटरनेट एक्सप्लोरर" मूल रूप से वेब ब्राउज़र नियंत्रण के चारों ओर एक पतला यूआई है। –

+0

[इस उत्तर] के अनुसार (https://stackoverflow.com/a/4357982/1009922) और [यह हालिया आलेख] (https://blogs.msdn.microsoft.com/patricka/2015/01/12/नियंत्रण-वेबब्रोसर-नियंत्रण-संगतता /), वेबब्रोसर नियंत्रण अपने उपयोगकर्ता-एजेंट स्ट्रिंग में 'MSIE 7.0' दिखाता है। मुझे लगता है कि यह वास्तविक आई 7 ब्राउज़र या संस्करण 7 संगतता मोड में एक हालिया आईई ब्राउज़र से अलग नहीं है। – ConnorsFan

उत्तर

3

बस एक बेवकूफ विचार है, लेकिन क्या आप की तुलना window.innerHeight के साथ तुलना नहीं कर सकते हैं, आईई के लिए अपेक्षित अंतर को मापें और यदि उसके बाद वेबब्रोसर नियंत्रण नहीं है?

हैक को नरक के रूप में है, लेकिन ज्यादातर मामलों के लिए काम कर सकता है। ऐसी अन्य चीजें भी हैं जो आप करने की कोशिश कर सकते हैं, चीजें जो आईई में एक निश्चित तरीके से काम करती हैं लेकिन शायद वेबब्रोसर कंट्रोल में काम नहीं करेगी।

उदाहरण के लिए:

  • डाउनलोड एक फ़ाइल
  • एक नई विंडो/टैब
+0

मुझे नहीं लगता कि यह कैसे विश्वसनीय हो सकता है। 'बाहरी हाइट' और 'आंतरिक हाइट' के बीच का अंतर उपयोगकर्ता प्राथमिकताओं से प्रभावित होता है। बुकमार्क बार या मेनू को दिखाना या छिपाना अंतर को प्रभावित करेगा। (मैंने आईई में 4 आसानी से सुलभ विकल्प गिनते हैं जो अंतर को प्रभावित करते हैं।) डीबग पैनल खोलने या बंद होने से भी प्रभावित होता है। ज़ूम भी इसे प्रभावित करता है। (मैं इसकी उम्मीद नहीं कर रहा था, लेकिन यहां हम हैं।) फिर सामान्य UI प्राथमिकताओं जैसी चीजें हैं। डिफ़ॉल्ट से भिन्न थीम का उपयोग करके दो संख्याओं के बीच अंतर बदल सकता है। – Louis

2

ऐसा लगता है कि जब कुछ भी window.external को सौंपा गया है एक विशिष्ट त्रुटि उठाया है खोलें। तो एक चेक

const isWebBrowserControl =() => { 
    try { 
    window.external = window.external 
    return false 
    } catch (error) { 
    if (error.message === 'I don\'t remember this. Some specific error message.') { 
     return true 
    } 
} 

कुछ ऐसा हो सकता है, हालांकि यह संभावित रूप से "विध्वंसक" जांच है। लेकिन मुझे सच में नहीं लगता कि इससे कोई समस्या होगी।

संबंधित मुद्दे