0

私のプロジェクトでは、特定の CSS プロパティを HTML 要素に適用できるかどうかを確認する必要があります。たとえば、「color」プロパティが「img」タグでサポートされているかどうかを確認する必要があります。以下のコードを使用して確認できることをどこかで読んだことを覚えています。

 var image = document.createElement('img');
    if(image.style.color)
        image.style.color = "blue";

しかし、これは間違った結果を返しています。プロパティがhtml要素でサポートされているかどうかを確認する方法を誰かが知っている場合は、答えてください。

ありがとう。

4

3 に答える 3

4

color文字通り、そのコードは要素のネイティブstyleオブジェクトにプロパティがあるかどうかをチェックするだけです。そのようなプロパティの有効性に関しては何も約束しません。実際、オブジェクトに任意のプロパティを格納できます。それが文体的な効果を持っていたかどうかは別の問題です.

JavaScript は CSS の教師ではないため、適用されたスタイルが有効であったかどうかを報告するメカニズムは実際にはありません。私が考えることができる最も近いことは、要素の計算されたスタイルに対してある種の反復スイープを行うことです(ただし、その場合でも、そのスタイルのリストを提供する必要があります。つまり、どれを反復するかを指定します)。特定のプロパティのアプリケーション。

ただし、ブラウザはスタイルを適用したときとは異なる方法でスタイルを報告する可能性があるため、これは扱いにくいでしょう。たとえば、色を HEX として設定した場合でも、計算されたスタイルから RGB(a) としてレポートされる場合があります。

于 2013-10-03T12:40:31.933 に答える
3

CSS 仕様により、すべての要素にすべてのプロパティを設定できます。それらは要素に潜在的な影響を与えないかもしれません (CSS 用語を使用するために「適用する」、これは少し奇妙です) が、これは要素の他のプロパティに依存します。たとえばwidth、要素に「適用」されませんspanが、要素に設定display: inline-blockすると、要素にwidth適用されます。

さらに、たとえば、プロパティは確かに要素にcolor「適用」されますが、レンダリングに本当に影響するかどうかは別の問題です。ほとんどの場合はそうではありませんが、画像が利用できない場合、テキストは宣言された色で表示されます (または表示されるべきです)。imgalt

そのため、本当に知っておく必要があることとその理由を検討する必要があります。

于 2013-10-03T14:03:03.197 に答える
2

特定のプロパティがオブジェクトに存在するかどうかを知りたい場合は、次のようにすることができます。

var image = document.createElement('img');
for (var key in image.style) {
    if (key == "color") image.style.key = "blue";
}

警告 1:他の人が言ったように、このチェックは特定のケースを除いてほとんど意味がないかもしれません。

警告 2:上のコードは、ブラウザーまたはユーザーがオブジェクトにプロパティを割り当てているかどうかをチェックします (たとえば、Webkit ベースのような一部のブラウザーは に対してこれを行いますstyleが、古い IE のようにそれを行わないものもあります)。

于 2013-10-03T14:32:39.927 に答える