Использование jQuery с приложением Metro JavaScript для Windows 8 вызывает ошибку безопасности

Поскольку это звучало так, jQuery был вариантом для Metro JavaScript-приложений, я начал с нетерпением ждать Windows 8 dev. Я установил Visual Studio 2012 Express RC и начал новый проект (и пустые, и сетчатые шаблоны имеют одинаковую проблему).

Я сделал локальную копию jQuery 1.7.2 и добавил ее в качестве ссылки на скрипт.





К сожалению. , как только я запускаю полученное приложение, оно выдает ошибку консоли:

HTML1701: невозможно добавить динамическое содержимое 'a' Попытка скрипта внедрить динамическое содержимое или элементы, ранее измененные динамически, что может быть небезопасно. Для например, использование свойства innerHTML для добавления скрипта или искаженного HTML будет генерировать это исключение. Используйте метод toStaticHTML для фильтрации динамическое содержимое или явно создавать элементы и атрибуты с такой метод, как createElement. Для получения дополнительной информации см. http://go.microsoft.com/fwlink/?LinkID=247104.

Я установил точку останова в неминифицированной версии jQuery и обнаружил недопустимую строку:

div.innerHTML = "   
a";

Судя по всему, модель безопасности для приложений Metro запрещает создавать элементы таким образом. Эта ошибка не вызывает каких-либо немедленных проблем для пользователя, но, учитывая ее местоположение, я беспокоюсь, что это приведет к сбою тестов обнаружения возможностей в jQuery, чего не должно быть.

Я определенно хочу, чтобы jQuery $.Deferredупрощал почти все. Я бы предпочел иметь возможность использовать механизм выбора и системы обработки событий, но я бы жил без них, если бы мне пришлось.

Как заставить новейший jQuery хорошо работать с Metro-разработкой?

44
задан patridge 2 June 2012 в 04:35
поделиться