ココログの背景色を変えるJavaScript v02
O’Reilly の「JavaScript 第6版」を読んで作ったのが、右上の表。テキトーにクリックすると、地の色が変わる…はずなんだが、chrome じゃ動かなかった。Firefox と IE と Safari じゃ動いたんだが。以下にソースを示すが、jQuery を使えばもっと簡単に書けるんで、あまし参考にしないように。
2013.06.25追加:
Google Chromeで動かない理由がわかった。chrome は、ローカルのCSSを読み込むが、アクセスは許可していない。だから描画には使えてもJavaScriptでスキャンはできない。ココログで公開した記事をchromeで読んだら、ちゃんと動きやがったw 以下、お世話になった頁。実は他にも幾つかコッソリ直してるが、動作に変わりはないはず←をい
<script type="text/javascript">
//<![CDATA[
// OK : Firefox 21.0, Internet Explorer 9.0.17, Safari 5.1.7
// no : Chrome 27.0.1453.116 m : chromeはローカルなCSSを読めてもcssRulesにアクセスできない
// だからオンラインだと動くんだな、これがw
// http://updownlog.tumblr.com/post/10308374906/chrome-cssrules
// http://www.webdeveloper.com/forum/showthread.php?231153-cssRules-are-null-in-Chrome
var com_cocologNifty_chikuwablog2;
if( !com_cocologNifty_chikuwablog2 ) com_cocologNifty_chikuwablog2={};
com_cocologNifty_chikuwablog2.changeBGColor = (function() {
var colors = [ // 背景色の一覧
"rgb( 230, 255, 255)",
"rgb( 255, 255, 255)",
"rgb( 230, 230, 255)",
"rgb( 255, 230, 255)",
"rgb( 230, 255, 230)",
"rgb( 255, 255, 230)",
"rgb( 230, 230, 230)",
"rgb( 255, 230, 230)",
] ;
var tbody = '<table cellspacing="1" bgcolor="#aaaa44"><tbody>\n_tbody_</tbody></table>\n';
var tline = '<tr><td style="background-color: _sColor_; "' +
' align="center" onclick="_com_(this);" data-id="_sName_">_sName_</td>\n_line_</tr>\n';
var tcolm = '<td style="background-color: _rgb_; " onclick="_com_(this);"' +
' width="12px" data-id="_sName_" > </td>\n';
var BG = {}; // 連想配列、スタイルのクラス名 or ID : スタイル設定
var tb = ""; // クリックする表のHTML
function cKeys( a ) { r=[]; for(var i in a ) r.push(i); return r; }
function cEach( a, f ) { for( var i=0; i<a.length; i++ ) f(a[i]); return a;}
// スタイルシートから背景色設定を探し連想配列BGに設定
function makeBG() {
cEach( document.styleSheets, function( x ) {
try {
cEach( x.cssRules, function( y ) {
try {
if( y.selectorText.match(/\s+/) ) return;
if( y.selectorText.match(/MultiBox/) ) return;
if( y.style.backgroundColor.toString().match( /transparent|init/i ) ) return;
if( y.style.backgroundColor ) { BG[y.selectorText] = y ; }
} catch( e ) {}
} );
} catch( e ) {}
} );
// クリックする表のHTMLを作る
tb = tbody.replace( /_tbody_/m, cKeys(BG).map( function(x) {
return tline.replace( /_sColor_/, BG[x].style.backgroundColor ).
replace( /_sName_/mg, x ).
replace( /_line_/m, colors.map( function(y) {
return tcolm.replace( /_rgb_/m, y ).replace( /_sName_/m, x );
} ).join( "" ) );
} ).join( "" ) ).
replace( /_com_/mg, "com_cocologNifty_chikuwablog2.changeBGColor.chg" );
return tb;
}
// 表を書き出す
function doWriteUI( c ) {
if( tb == "" ) { tb = makeBG(); }
document.writeln( tb );
//alert( tb );
return tb;
}
// 表をクリックしたら背景色を変える
function doChange( c ) {
BG[c.getAttribute( "data-id" )].style.backgroundColor = c.style.backgroundColor;
return false;
}
//doWriteUI();
return {
writeUI: doWriteUI,
chg: doChange,
};
}() );
//alert( "a");
com_cocologNifty_chikuwablog2.changeBGColor.writeUI();
//]]>
</script>
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- サミュエル・ウーリー「操作される現実 VR・合成音声・ディープフェイクが生む虚構のプロパガンダ」白揚社 小林啓倫訳(2021.07.11)
- ココログ:記事編集で余分な改行が入る→初期設定を通常エディタにする(2019.10.10)
- Q.Ethan McCallum「バッドデータ ハンドブック データにまつわる問題への19の処方箋」オライリージャパン 磯蘭水監訳 笹井崇司訳(2019.06.07)
- ココログ:リンク切れ一覧と旧URL一覧と公開記事URL一覧を突き合わせるOpenOfficeCalc(2018.11.18)
- ココログ:古い「カテゴリ別書評一覧」から各記事の旧URL 一覧を作るVBScript(2018.11.15)
コメント