À l'aide de jQuery avec Windows 8 Metro Application JavaScript causes d'erreur de sécurité

Car il sonnait comme jQuery est une option pour le Métro les applications JavaScript, j'étais en train de regarder en avant pour Windows 8 dev. J'ai installé Visual Studio 2012 Express RC et a commencé un nouveau projet (à la fois vide et de la grille de modèles ont le même problème).

J'ai fait une copie locale de jQuery 1.7.2 et de l'ajouter en tant que référence de script.

<!-- SomeTestApp references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/jquery-1.7.2.js"></script>
<script src="/js/default.js"></script>

Malheureusement, dès que j'ai couru l'application en elle lance une console d'erreur:

HTML1701: Impossible d'ajouter du contenu dynamique 'a' Un script a tenté d'injecter du contenu dynamique, ou
les éléments précédemment modifié dynamiquement, qui peuvent être dangereuses. Pour
exemple, à l'aide de la propriété innerHTML pour ajouter un script ou code HTML mal formé
va générer cette exception. L'utilisation de la méthode toStaticHTML à filtre
contenu dynamique, ou créer explicitement des éléments et des attributs avec une
méthode createElement. Pour plus d'informations, voir
http://go.microsoft.com/fwlink/?LinkID=247104.

J'ai giflé un point d'arrêt dans un non-compacte de la version de jQuery et trouvé la ligne incriminée:

div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";

Apparemment, le modèle de sécurité pour les applications Metro interdit de créer des éléments de cette façon. Cette erreur ne cause pas de problèmes immédiats pour l'utilisateur, mais compte tenu de son emplacement, je suis inquiet, il sera la cause de la capacité de découverte tests en jQuery à l'échec qui ne le sont pas.

J'ai vraiment envie de jQuery $.Deferred pour faire à peu près tout plus facile. Je préfère être en mesure d'utiliser le sélecteur de moteur et de gestion des événements, des systèmes, mais je pourrais vivre sans eux, si je devais le faire.

Comment obtenir la plus récente de jQuery pour jouer gentiment avec le Métro de développement?

  • Êtes-vous le chargement de jquery via un cdn?
  • Pas de. C'est une erreur déclenchée dans le local jQuery code de l'exécution.
  • Sur une note de côté, on dirait que je puisse apprendre nouvelle promesse du système au lieu de jQuery $.Deferred.
  • jQuery 1.8 nécessite deux plus de modifications dans le but de travailler ensemble avec Windows 8 sans problème. J'ai écrit un Blog qui couvre les modifications nécessaires, donne quelques informations de base et fournit un "corrigé" de la version de jQuery 1.8.
  • Voici une bonne ressource pour l'utilisation de jQuery sur Windows 8: incloud.de/2012/08/windows-8-using-jquery-for-app-development
  • Utilisation suivantes pour résoudre ce problème: github.com/Microsoft/winstore-jscompat

InformationsquelleAutor patridge | 2012-06-02