Подтвердить что ты не робот

Приложение Silverlight исчезает при обновлении страницы в IE10

ОБНОВЛЕНИЕ. Обход проблемы. Чтобы заставить IE10 включить режим совместимости, включите один из следующих метатегов:

<meta http-equiv="x-ua-compatible" content="IE=7" />
<meta http-equiv="x-ua-compatible" content="IE=8" />

Это не идеальное решение по разным причинам, но, по крайней мере, оно устраняет проблему.


ОРИГИНАЛЬНЫЙ ВОПРОС:
Я понял пару месяцев назад, что проблема с нашим приложением Silverlight в IE10 в Windows 8 (я не пробовал предварительный просмотр IE10 для Windows 7). Когда страница asp.net, на которой размещается наше приложение SL, загружает все, что работает, и приложение загружается как ожидалось. Если я немедленно обновляю страницу, она также перезагружается, как и ожидалось. Но: Если я сосредоточусь на приложении Silverlight, щелкнув его, а THEN ударил F5, он просто исчезнет. Это похоже на то, что плагин полностью исчезает. Если я отслеживаю запросы с помощью Fiddler, я вижу, что для xap файла не выдается запрос. Я надеялся, что это будет исправлено в выпуске исправления для IE10, но пока ничего не изменилось. Я не могу найти какую-либо информацию об этом, когда я пытаюсь использовать его. Мне кажется маловероятным, что я должен быть первым, кто его обнаружил, и я очень удивлен, что не нахожу больше информации. Чтобы воспроизвести проблему:

  • Создайте новое приложение Silverlight
  • Добавьте какой-то контент в MainPage.xaml, например кнопку или другое.
  • Запустите приложение в IE10 (на Win8)
  • Щелкните в любом месте приложения Silverlight. Это просто для фокусировки плагина.
  • Обновить страницу (F5)
  • Результат: приложение Silverlight не загружается, а страница пуста.

Несколько наблюдений:

  • После описанных выше шагов обновление не вернет приложение.
  • После описанных выше шагов, если я повторно введу url в адресную строку и нажмите Enter, приложение загрузится так, как ожидалось.
  • Если я включу представление совместимости в IE, приложение также загрузится, как ожидалось. Ничто из этого не приведет к воспроизведению ошибки при включении режима совместимости.

Теперь на мои вопросы:

  • Кто-нибудь еще заметил это поведение?
  • Если да, нашли ли вы обходное решение?
4b9b3361

Ответ 1

Я вижу ту же проблему с моим приложением Silverlight в IE 10.

Я попытался добавить метатег совместимости IE 8, предложенный выше, но это не решает проблему последовательно. Кажется, что он работает только периодически, после того как говорят каждую 5-ю попытку обновления?!

Единственный способ, с помощью которого я могу работать, это заставить режим браузера "видеть совместимость с IE 10", и я не думаю, что это можно сделать через содержимое страницы (метатег и т.д.)? Мне пришлось удалить метатег совместимости IE 8, чтобы кнопка "Совместимость" была доступна в адресной строке, а затем попросила пользователей нажать кнопку совместимости, которая затем запоминается для сайта. Это приводит к тому, что браузер переходит в режим браузера: "Просмотр сокетов IE 10" и "Режим документа": "Стандарты IE7". Поведение обновления затем работает последовательно, как и ожидалось, и как оно привыкло.

Это большая проблема для нас. Мы создали наше приложение Silverlight, чтобы кнопка обновления браузера использовалась для обновления страниц/контента в приложении (пользователи остаются в системе и т.д.). Очень плохо, что мы должны попросить пользователей установить наш сайт для работы в режиме совместимости, чтобы функциональность обновления работала так, как ожидалось.

Обратите внимание, что это все еще работает в Chrome. Кажется глупым, что нам может потребоваться рекомендовать нашим пользователям использовать Chrome из-за этой проблемы!

UPDATE:

Обходной путь для этого, похоже, заключается в том, чтобы всегда загружать объект Silverlight на свою страницу хостинга динамически с помощью JavaScript.

например.

function onLoad() {
  var silverlightControlHost = document.getElementById("silverlightControlHost");
  silverlightControlHost.innerHTML = "<object ...

Ответ 2

У меня все еще были проблемы с решением, представленным Крисом.

Это отлично работает для меня:

window.onbeforeunload = function () {
            var silverlightControlHost = document.getElementById("silverlightControlHost");
            silverlightControlHost.innerHTML = "";
        }

Ответ 3

Я решил проблему очень просто. Я написал javascript-код в конце страницы (или после тега объекта, где находится ваше приложение silverlight), и установите фокус на другой элемент, например ссылку. Пример:

<object id="silverlightHostControl">...bla bla bla</object> <script type="text/javascript" language="javascript"> var shc = document.getElementById("silverlightHostControl"); document.getElementById("myLink").focus(); </script>

Shc var бесполезен, я просто уточню. Помните: ваш код javascript должен установить фокус на другой (но настраиваемый) объект ПОСЛЕ того, как тег объекта приложения silverlight был разобран, что означает, что ваш js-код записывается после объекта приложения silverlight.

Ответ 4

В ответ на ваш вопрос №1 это происходит и с нашими приложениями Silverlight. Единственными обходными решениями являются 1) перезапуск браузера или 2) переход в режим совместимости.

По-видимому, это ошибка в ie10.

Ответ 5

Спасибо за все решения обходных решений, но это, очевидно, ошибка с плагином Silverlight.

Мы собрали несколько билетов непосредственно с командой разработчиков Internet Explorer, и они сказали, что проблема связана с внешней проблемой. Это не хороший ответ от Microsoft.

В любом случае, на этот раз наши разработчики подняли билет через команду разработчиков Silverlight, которая все еще ждет ответа. Чтобы получить хороший ответ от них, нам нужно привлечь больше людей, столкнувшихся с этой проблемой.

Вы можете проголосовать за эту проблему на веб-сайте Connect, который является официальной платформой отчетности Microsoft.

Ссылка на наш билет: http://connect.microsoft.com/VisualStudio/feedback/details/789004/ie10-shows-blank-page-upon-refreshing-silverlight-app

Приветствия

Мох

Ответ 6

Да, я тоже сталкиваюсь с одной проблемой с одним моим приложением. Если я открою помощь моего приложения в IE 10, я должен каждый раз обновлять страницу для просмотра содержимого.

У меня есть два способа решения этой проблемы: 1. Нажмите клавишу ALT один раз 2. Откройте IE в совместимом режиме