リドルっつーのは同じようなページを何枚も作るので、基本1つ作ってコピペして変更してということをするわけですが、ページごとに違うスクリプトで処理したい場合に、
1ページ目が <script type="text/javascript" src="hoge.js"></script>
2ページ目が <script type="text/javascript" src="piyo.js"></script>
だったりすると、あ、なんか前のページと違うことしてるーとバレやすい気がしないでもありません。
どっちみちソースおっかけられたら防ぎようはないんですが、ちょっとでも分かりにくくするために js を動的に読み込んで実行するというのを「赤と黒」や「Overheated 2」でやってたんですが、それをマイナーチェンジしたバージョンを紹介します。
ぶっちゃけのソースはこうです。
if( document.body.className ) { var fn = document.body.className; var sc = document.createElement('script'); sc.type = 'text/javascript'; if( document.all ) { var bDone = false; sc.onreadystatechange = function(){ if( sc.readyState == 'complete' || sc.readyState == 'loaded' ) { if( !bDone ) { bDone = true; window[fn](); } } } } } else { sc.onload = function(){ window[fn](); } } sc.src = fn+'.js'; document.body.appendChild(sc);HTML の方には <body class="hoge"> と書いておきます。
これで hoge.js が読み込まれ、関数 hoge() が実行されます。
簡単のためにファイル名と関数名(エントリーポイント)を同じ名前にしています。body の class に設定するのはヤダって人はどっかの要素の class や id や name を読み取るように変更してください。
スクリプトの方も IE の判定に document.all かよ、とかツッコミどころあるかとは思います^^;
IE 以外であれば該当するファイルが無かったら onerror でキャッチすることができます。が、IE ではそれができません。もしできたらリドルの答えを js のファイル名にしてページ遷移のないリドルなんかも作れるんですけどね (Dragon's eye でやろうとして挫折しましたw)。
まあこんなことしても Firebug なんかで見られたら <script> タグが挿入されていることはバレバレではございます。
スクリプトそのものを暗号化してしまうって手も考えられます。
(↓擬似コードです)
var scrumbledSource = "WWWWWWWWwwwwwwwwwwWWWWWWWWwwWWwwww...(ずっと続く)...wwWWWWWWWWWWWw"; eval( decodeScrumbledSource(scrumbledSource) );みたいな感じで。
decode するルーチンは丸見えなんで解読する気になればできちゃいますけど。