NightscapeNightscape Mail Calendar Instant Messenger Search MyNetscape Download
HOME > EXPERIMENT > パーフェクトCSS
EXPERIMENT  パーフェクトCSS
<< previous
next >>
 ブラウザーによって動作が異なるCSSですが、JavaScript経由でその設定をすることによってIE/Netscape4.x/6.x完全互換のCSS設定が可能になります。 
巷ではNetscape4.xや最新のNetscape6.1PR2は、CSS非対応ばかりか、予想外の奇妙な動作をするクソブラウザーとされていますが、それは全くのデタラメです。 
単にほとんどの人達が何も知らないだけです。大手のmacromediaさえも、「CSSはIE、Netscape非互換である」としています。 
しかしNetscape社は、かなり前にJavaScriptによるCSS制御の方法をWEBプログラマー向けに開発しています。それがこのJASSです。
以下にサンプルコードを提示します。普通にCSSで設定すると、 

BODY{font-size:12px;}
TD{font-size:12px;}
.classa{font-size:12px;}
TD.classb{font-size:12px;}
TD B.classc3foo{font-size:12px;}

ですが、これをJASSで記述すると以下のようになります。 

<STYLE ID="tssxyz" TYPE="text/css"></STYLE> 
<SCRIPT LANGUAGE="JavaScript1.2"> 
<!-- 
pFontSize = 12px; 
var agt=navigator.userAgent.toLowerCase(); 

/* 以下はNetscape4.x用スクリプト */
if ( (parseInt(navigator.appVersion)==4) && 
     (agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) 
               && (agt.indexOf('compatible') == -1) ) { 
document.tags.BODY.fontSize=pFontSize; 
document.tags.TD.fontSize="12px"; 
document.classes.classa.all.fontSize="12px"; 
document.classes.classb.TD.fontSize="12px"; 
document.contextual(document.tags.TD, document.classes.classc#foo.B).fontSize="12px";} 

/* 以下はNetscape6.x用スクリプト */
 else if (agt.indexOf('gecko') != -1) { 
document.getElementById('tssxyz').sheet.insertRule('BODY { font-size: ' + pFontSize + ' }', document.getElementById('tssxyz').sheet.cssRules.length ) 
document.getElementById('tssxyz').sheet.insertRule('TD { font-size: 12px }', document.getElementById('tssxyz').sheet.cssRules.length ) 
document.getElementById('tssxyz').sheet.insertRule('.classa { font-size: 12px }', document.getElementById('tssxyz').sheet.cssRules.length ) 
document.getElementById('tssxyz').sheet.insertRule('TD.classb { font-size: 12px }', document.getElementById('tssxyz').sheet.cssRules.length ) 
document.getElementById('tssxyz').sheet.insertRule('TD B.classc#foo { font-size: 12px }', document.getElementById('tssxyz').sheet.cssRules.length )} 

/* 以下はIE用スクリプト */
else if ( (parseInt(navigator.appVersion)>=4) && 
     (agt.indexOf('msie') != -1) ) { 
document.styleSheets["tssxyz"].addRule ("BODY", "font-size:" + pFontSize); 
document.styleSheets["tssxyz"].addRule ("TD", "font-size:12px"); 
document.styleSheets["tssxyz"].addRule (".classa", "font-size:12px"); 
document.styleSheets["tssxyz"].addRule ("TD.classb", "font-size:12px"); 
document.styleSheets["tssxyz"].addRule ("TD B.classc#foo", "font-size:12px");} 
//--> 
</SCRIPT>