特定のプロパティが機能するかどうかではなく、機能するかどうかをテストする場合setAttribute
、これは間違ったアプローチであり、setAttribute
常にundefined
(== false) が返されます。代わりに、要素がキーとして属性名を持っているかどうかをテストします。DOM 内の要素は変更されている可能性があるため、DOM から取得した要素ではなく、新しい要素を使用します。
function attributeWorks(attr, within) {
return document.createElement(within || 'div').hasOwnProperty(attr);
}
一部のプロパティは特定のタイプの要素にのみ存在するため、パラメーターを追加しましたwithin
。たとえば、常に a に対してテストすると<div>
、関数は を返しfalse
ますhref
。
関数が機能するかどうかをテストする場合、setAttribute
これはまだ間違ったアプローチです。setAttribute
実装されていない場合、実行しようとすると、false が返される代わりにエラーがスローされるためです。上記と同じ方法を使用できますが、パラメーターが既にわかっているという単純化があります。
function setAttributeWorks() {
return document.createElement('div').hasOwnProperty('setAttribute');
}