Поскольку это звучало как jQuery был вариантом для приложений Metro JavaScript, я начал с нетерпением ждать Windows 8 dev. Я установил Visual Studio 2012 Express RC и начал новый проект (как пустые, так и сетчатые шаблоны имеют одинаковую проблему).
Я сделал локальную копию jQuery 1.7.2 и добавил ее как ссылку 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>
К сожалению, как только я запустил полученное приложение, он выдает консольную ошибку:
HTML1701: невозможно добавить динамический контент 'a' A script попытался добавить динамический контент или элементы, ранее измененные динамически, которые могут быть небезопасными. Для например, используя свойство innerHTML для добавления script или искаженного 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, что не должно.
Я определенно хочу jQuery $.Deferred
для упрощения всего. Я бы предпочел иметь возможность использовать движок селектора и системы обработки событий, но я бы жил без них, если бы мне пришлось.
Как получить последний jQuery, чтобы хорошо играть с разработкой Metro?