jQuery1.3を使用するクライアントのWebサイトにロードするjQuery1.8を使用して作成したjavascriptウィジェットがあります。本当に醜いハックなしでは、IEでnoConflictを正しく動作させることはできません。ウィジェットがレンダリングされた後のページは次のようになります。
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.min.js"></script>
</head>
<html>
<body>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
$jq = $.noConflict();
</script>
</body>
</html>
Chromeでは、これはうまく機能し、$jqはjQuery1.8.3として定義されますが、IE 8ではこれは機能せず、$jqはjQuery1.3として定義されます。私の推測では、タイミングの問題であり、新しいjQueryがロードされる前にスクリプトが実行されます。いくつかのコールバックタイマーを入れて動作しますが、コールバックタイマーを組み込むことが正しい方法だとは想像できません。
何か案は?
編集
jQuery1.3に名前空間を付けることはできません。クライアントはページ全体でそれを使用し、アップグレードしたくありません。