プログレッシブ エンハンスメントの Enhanced.jsライブラリを使用した Filament Group のデモをご覧ください。
与えるように変更する:-
<script type="text/javascript" src="../_shared/EnhanceJS/enhance.js"></script>
<script type="text/javascript">
// Run capabilities test
enhance({
loadScripts: [
{src: 'js/excanvas.js', iecondition: 'all'},
'../_shared/jquery.min.js',
'js/visualize.jQuery.js',
'js/example.js'
],
loadStyles: [
'css/visualize.css',
'css/visualize-dark.css'
]
});
alert($);
</script>
おそらくjQueryがまだロードされていないため、アラートで「$ is undefined error」が表示されます。
注 - alert($) はデバッグ用です - $('some-selector') などで何かをしようとしています - $(handler) や $(document).ready などは動作しません - jquery が読み込まれておらず、$ が定義されていません。
エンハンスのonScriptLoadedは彼のトリックを行う必要があるように見えますが、追加すると
onScriptsLoaded:[runMyCode()]
以降
function runMyCode()
{
alert("runMyCode was called");
alert($);
}
最初のアラートは機能しますが、$ はまだ定義されていません。
ボタンのクリック イベントで runMyCode を呼び出すと、機能します。
問題は、enhance.js ですべてのスクリプトの読み込みが完了したら、どうすればコードを実行できるかということです。
PS IE8/FF3/Chrome7で確認済みの同じ問題