私のサイト用に単純なプレースホルダー jQuery プラグインを作成しようとしていますが、もちろん、ネイティブのプレースホルダー属性がサポートされていない場合にのみ関数を起動したいと考えています…</p>
jQuery を使用してプレースホルダー属性のネイティブ サポートをテストするにはどうすればよいですか?
私のサイト用に単純なプレースホルダー jQuery プラグインを作成しようとしていますが、もちろん、ネイティブのプレースホルダー属性がサポートされていない場合にのみ関数を起動したいと考えています…</p>
jQuery を使用してプレースホルダー属性のネイティブ サポートをテストするにはどうすればよいですか?
$.support
作成したJavascriptの先頭にこれを挿入することで、非常に簡単に追加できます。
jQuery.support.placeholder = (function(){
var i = document.createElement('input');
return 'placeholder' in i;
})();
$.support.placeholder
その後、コード内のいずれかまたはjQuery.support.placeholder
どこでも使用できます。
注意:このコードは、上記のhellvinzによって提供されたリンクであるdiveintohtml5から採用されました。
http://www.modernizr.com/にある Modernizr ライブラリを使用します。
そして、これを行います:
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
プロパティは、プレースホルダー属性がHTML INPUT要素で定義されているかどうかに関係なく、すべてのブラウザーのINPUTDOMオブジェクトに存在します。
正しい方法は次のとおりです。
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.
}