jQuery は Metro JavaScript アプリのオプションのように聞こえたので、Windows 8 開発を楽しみにしていました。Visual Studio 2012 Express RC をインストールし、新しいプロジェクトを開始しました (空のテンプレートとグリッド テンプレートの両方に同じ問題があります)。
jQuery 1.7.2 のローカル コピーを作成し、スクリプト リファレンスとして追加しました。
<!-- SomeTestApp references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/jquery-1.7.2.js"></script>
<script src="/js/default.js"></script>
残念ながら、結果のアプリを実行するとすぐに、コンソール エラーが表示されます。
HTML1701: 動的コンテンツ ' a' を追加できません スクリプトが動的コンテンツ、または以前に動的に変更された要素を挿入しようとしましたが、安全ではない可能性があります。たとえば、innerHTML プロパティを使用してスクリプトまたは不正な形式の HTML を追加すると、この例外が生成されます。toStaticHTML メソッドを使用して動的コンテンツをフィルタリングするか、createElement などのメソッドで要素と属性を明示的に作成します。詳細については、 http: //go.microsoft.com/fwlink/?LinkID=247104を参照してください。
縮小されていないバージョンの jQuery でブレークポイントを平手打ちし、問題のある行を見つけました。
div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
どうやら、Metro アプリのセキュリティ モデルでは、この方法で要素を作成することは禁止されています。このエラーはユーザーに差し迫った問題を引き起こすわけではありませんが、その場所を考えると、jQuery での機能検出テストが失敗してはならないのではないかと心配しています。
$.Deferred
ほぼすべてを簡単にするために、jQueryが絶対に必要です。セレクター エンジンとイベント処理システムを使用できるようにしたいと考えていますが、必要に応じてそれらを使用しなくても済みます。
最新の jQuery を Metro 開発とうまく連携させるにはどうすればよいでしょうか?