0

texarea からの文字列があります。文字列が HTML の色名の 1 つであるかどうかを確認したいと思います。文字列をすべての文字列と単純に比較できることはわかっていますが、それはかなりのスペースを使用し、あまり良くありません。iscolorname(color) のような関数はありますか? それとも、すべてをチェックすることはできませんか?

4

2 に答える 2

1

この質問はいくつかの部分的な答えを提供します:色名を16進コードに変換するJavascript関数

完全なもの:メモリ内のキャンバスを作成してこれを行うことができます:

if (suspectedColor.indexOf('(')>=0 || suspectedColor.indexOf('#')>=0) {
   // see http://www.w3.org/TR/2dcontext/#dom-context-2d-fillstyle
   isColorName = false;
} else {
    context.fillStyle = suspectedColor;
    isColorName = context.fillStyle!="#000000" ; // ok, I let as an exercice the check that colorName isn't black
}

これのために動作します:

コンテクスト 。fillStyle[=value]図形の塗りつぶしに使用されている現在のスタイルを返します。

塗りつぶしスタイルを変更するように設定できます。

スタイルは、CSSカラーを含む文字列、またはCanvasGradientまたはCanvasPatternオブジェクトのいずれかです。無効な値は無視されます。

http://www.w3.org/TR/2dcontext/#dom-context-2d-fillstyleから)

于 2012-06-07T16:00:53.887 に答える
0

色を設定して読み返すことができます。IE 以外のブラウザーは無効な色を無視します。古い IE では、無効なプロパティを設定するとキャッチできるエラーがスローされます。

(これが頻繁に使用される場合は、代わりにオブジェクト テストを使用してください。)

function validColor(cstring){
    var check= false, dummy= document.createElement('span');
    try{
        dummy.style.color= cstring;
        return !!dummy.style.color;
    }
    catch(er){
        return false;
    }
    finally{
        dummy= null;
    }
}
validColor('reddish')
于 2012-06-07T18:01:07.773 に答える