編集/補遺:getComputedStyle()
IE9と他のブラウザーの詳細を掘り下げようとしていることに気づきました。getComputedStyle()
したがって、このスクリプトが特定の選択オプションではなく存在をテストするだけのように見えるため、このスクリプトが探しているものではない場合は注意が必要です。
このサイトgetComputedStyle
は、ブラウザ間で検出するためのソリューションを提供しているようです。具体的には、ページの下部にあるこのコード:
<script type="text/javascript">
// First paramter is a nodes id, second the CSS property you want
function getCSSProperty(sNodeId, sProperty)
{
var oNode = document.getElementById(sNodeId);
if(document.defaultView)
{
return document.defaultView.getComputedStyle(oNode, null).getPropertyValue(sProperty);
}
else if(oNode.currentStyle)
{
var sProperty = sProperty.replace(/-\D/gi, function(sMatch)
{
return sMatch.charAt(sMatch.length - 1).toUpperCase();
});
return oNode.currentStyle[sProperty];
}
else return null;
}
alert(getCSSProperty("myDiv", "margin-bottom"));
</script>
編集:元のポスターには正規表現のロジックについて質問があり、これが私の説明の試みです。私が間違っている場合は、私に知らせてください、またはあなたがそれが何であると思うかについてコメントしてください:
var sProperty = sProperty.replace(/-\D/gi, function(sMatch)
{
return sMatch.charAt(sMatch.length - 1).toUpperCase();
});
さて、そのコードのチャンクは正規表現を実行しており、実際の正規表現は/-\D/gi
です。このガイドを正規表現(別名:regex)に使用すると、理解できると思います。
/
区切り文字です。魔法はそれらの間で起こります。は-
単にダッシュに一致しています。これ\D
は、「数字以外の文字と一致する」という意味の特殊な表記法です。また、これgi
は正規表現呼び出しに固有であり、ここでは次のように説明されています。「gi
修飾子は、文字列内の正規表現のすべての出現を大文字と小文字を区別せずに検索するために使用されます。」</ p>
ネストされた関数は、正規表現の一致に作用し、replace
基本的に一致に作用し.toUpperCase()
ます。
それで、あなたが検出しようとしているより深い機能に一致するようにこれを適応させることができるかもしれないように思われますか?