Jak sprawdzić, czy przeglądarka obsługuje natywny atrybut zastępczy?

Próbuję napisać prostą wtyczkę zastępczą jQuery dla mojej strony, ale oczywiście chcę tylko odpalić funkcję, jeśli natywny atrybut Zastępczy nie jest obsługiwany ...

Jak używać jQuery do testowania natywnej obsługi atrybutu zastępczego?

Author: Tshepang, 2010-10-15

4 answers

Możesz dodać do $.support dość łatwo wstawiając to na górze Javascript, który napisałeś:

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

Możesz następnie użyć $.support.placeholder lub jQuery.support.placeholder w dowolnym miejscu kodu.

NB ten kod zaadaptowany z diveintohtml5 , link podany przez hellvinz powyżej.

 93
Author: lonesomeday,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 14:10:23

Skorzystaj z biblioteki Modernizr, którą znajdziesz tutaj: http://www.modernizr.com/

A potem zrób to:

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

Modernizr jest naprawdę przydatny do testowania obsługi przeglądarki dla prawie wszystkich funkcji HTML5.

 15
Author: Ender,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 21:45:43

Lubię takie proste zajęcia ...

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

... możesz więc łatwo sprawdzić, czy twoja przeglądarka obsługuje atrybut zastępczy.

if (Browser.Can.Placeholder()) {

}
 4
Author: WoIIe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-23 12:33:39

Właściwość placeholder istnieje na wejściowych obiektach DOM we wszystkich przeglądarkach, niezależnie od tego, czy atrybut zastępczy został zdefiniowany na elemencie wejściowym HTML.

Prawidłowy sposób to:

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.
}
 3
Author: Aleksey Kolesnik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 20:22:32