كيفية اختبار ما إذا كان المتصفح يدعم سمة العنصر النائب الأصلي؟

StackOverflow https://stackoverflow.com/questions/3937818

سؤال

أحاول أن أكتب مكونًا إضافيًا لـ JQuery Plansholder لموقع لي ، لكن بالطبع أريد فقط إطلاق الوظيفة إذا لم تكن سمة العنصر النائب الأصلي مدعومًا ...

كيف يمكنني استخدام jQuery لاختبار الدعم الأصلي لسمة العنصر النائب؟

هل كانت مفيدة؟

المحلول

يمكنك إضافة إلى $.support بسهولة تامة من خلال إدخال هذا في الجزء العلوي من جافا سكريبت التي كتبتها:

jQuery.support.placeholder = (function(){
    var i = document.createElement('input');
    return 'placeholder' in i;
})();

يمكنك بعد ذلك استخدام أي منهما $.support.placeholder أو jQuery.support.placeholder في أي مكان في الكود الخاص بك.

NB هذا الرمز مقتبس من DiveIntoHtml5, ، الرابط المقدم من Hellvinz أعلاه.

نصائح أخرى

استخدم مكتبة Modernizr ، والتي يمكنك العثور عليها هنا: http://www.modernizr.com/

ثم افعل هذا:

if (Modernizr.input.placeholder) {
  // your placeholder text should already be visible!
} else {
  // no placeholder support :(
  // fall back to a scripted solution
}

Modernizr مفيد حقًا لاختبار دعم المتصفح لجميع وظائف HTML5 تقريبًا.

أحب الحصول على مثل هذا الفصل البسيط ...

var Browser = {
  Can: {
    Placeholder: function () {
      return 'placeholder' in document.createElement('input'); 
    }
  }
}

... حتى تتمكن من التحقق من ما إذا كان المتصفح يدعم سمة العنصر النائب.

if (Browser.Can.Placeholder()) {

}

ال placeholder توجد خاصية على كائنات DOM الإدخال في جميع المتصفحات بغض النظر عما إذا كانت سمة العنصر النائب قد تم تعريفها على عنصر إدخال HTML أم لا.

الطريقة الصحيحة هي:

var Modernizr = {};
// Create the input element for various Web Forms feature tests.
var inputElem = document.createElement('input'), attrs = {};    
Modernizr.input = (function(props) {
    for(var i = 0, len = props.length; i < len; i++) {
        attrs[props[i]] = props[i] in inputElem;
    }
    return attrs;
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));

if(!Modernizr.input.placeholder) {
    // Do something.
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top