7

Наше приложение не может работать с IE11 и EM. Мы используем модификацию JSF-1.2 и RichFaces 3.X. Когда мы запускаем веб-страницу на IE11 без EM, все работает нормально, но мы должны использовать IE11 с EM. Есть ли какой-либо возможный метод для отключить EM для страницы с кодом?Приложение JSF с использованием IE11 с корпоративным режимом

IE Ошибка при консолидации: «XML5632: Разрешен только один корневой элемент.« Это происходит при перемещении между страницами.

PS: Приложение работает на IE8, IE9 и IE11 без каких-либо проблем, но при попытке его IE11 и EM подмигнули поднимая ошибку.

+0

Разумно _upgrade_ ** JSF ** и ** RichFaces **? Или перепрограммировать приложение с использованием разных технологий? –

+0

Определение корпоративного режима: страница в настоящее время отображается в режиме Enterprise, которая является эмуляцией Windows Internet Explorer 8. И IE8 не поддерживают iframe с элементом . (http://technet.microsoft.com/library/dn640687.aspx) Теперь для запуска на движке IE8 не существует приложения для создания сборок. –

+0

Попробуйте добавить HTTP-заголовок «X-UA-Compatible: IE = Edge» из фильтра Servlet. например: response.addHeader («X-UA-Compatible», «IE = Edge»); –

ответ

2

Решение этой проблемы не является шлифованием XHTML с сервера, но родной HTML. Этот обеспечивающий фильтр, который меняет ответ от application/xhtml+xml на text/html. Фильтр получить форму ответа заголовка пользовательского агента и найти, если установлено „compatible; msie 8.0“, что означает, что IE11 работает в режиме Enterprise и Emulate IE8.

Наше реализованное решение:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 

    String userAgent = ((HttpServletRequest) request).getHeader("user-agent"); 

    if (userAgent != null && userAgent.toLowerCase().contains("compatible; msie 8.0")) 
    { 
    chain.doFilter(request, new ForcableContentTypeWrapper((HttpServletResponse) response)); 
    } 
    else 
    { 
    chain.doFilter(request, response); 
    } 
} 

private class ForcableContentTypeWrapper extends HttpServletResponseWrapper 
{ 
    public ForcableContentTypeWrapper(HttpServletResponse response) 
    { 
    super(response); 
    } 

    @Override 
    public void setContentType(String type) 
    { 
     if (type.contains("application/xhtml+xml")) 
    { 
     super.setContentType(type.replace("application/xhtml+xml", 
              "text/html")); 
    } 
    else 
    { 
     super.setContentType(type); 
    } 

    } 
} 
-1

Если ваше приложение ограничивается только в пределах локальной сети и доступна в ограниченной сети, то вы можете отключить EM через политику сети группы

http://msdn.microsoft.com/en-us/library/dn640688.aspx

или, вы можете попытаться удалить URL вашего приложения из SiteList файл (файл, в котором запись EM реестра указывает на упомянутых в приведенной выше ссылке), поэтому ваше приложение не будет включена в список EM сайта

Дополнительные ссылки: http://msdn.microsoft.com/en-us/library/dn640699.aspx

+0

Это не решение для меня .. у нашего клиента есть политика компании для этого и приложения, работающего в Frame под другим приложением, которое должно запускаться на EM. Я прошу отключить EM для страницы из кода. –