2013-09-05 2 views
2

Я использую GWT 2.4 (и я не могу обновить свою версию до версии 2.5) У меня возникает следующая проблема: когда я использую Chrome, Firefox или Internet Explorer 9 o 10, моя система работает довольно хорошо; используя Internet Explorer 8, мои системы вообще не работают; он показывает пустую страницу для пользователя и я получаю следующий яваскрипт ошибки:GWT 2.4 Проблемы IE8

Dettagli errore pagina Web

Agente utente: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) Timestamp: Thu, 5 Sep 2013 10:56:58 UTC

Messaggio: Argomento non valido. Linea: 28410 Carattere: 54 Codice: 0 URI: http://app.it:8080/myApp/F662F41B287D1686DCB056062754DFEB.cache.html

Я искал в сети, и я нашел эту ссылку: https://code.google.com/p/google-web-toolkit/issues/detail?id=6665 В этом вопросе GWT это объясняется тем, что GWT 2,4 имеет некоторые проблемы с IE8 и хромированной рамкой; Я сделал то, что они предложили; на самом деле, что я сделал это:

  • в моем приложение HTML страницы, я добавил следующие мета-тег: мета HTTP-эквив = "X-UA-Compatible" содержание = "IE = край, хром = 1 "
  • Я создал свой обычай PropertyProviderGenerator (см код ниже)
  • в моем файле .gwt.xml я указал, чтобы использовать свой собственный PropertyProviderGenerator (см код ниже)

PropertyProviderGenerator

import com.google.gwt.core.ext.TreeLogger; 
import com.google.gwt.core.ext.linker.ConfigurationProperty; 
import com.google.gwt.core.ext.linker.PropertyProviderGenerator; 

import java.util.Arrays; 
import java.util.List; 
import java.util.SortedSet; 

public class CustomUserAgentPropertyGenerator implements PropertyProviderGenerator { 

    private static final List<String> VALID_VALUES = Arrays.asList(new String[]{"ie6", "ie8", "gecko1_8", "safari", "opera", "ie9"}); 

    private static UserAgentPropertyGeneratorPredicate[] predicates = 
      new UserAgentPropertyGeneratorPredicate[] { 

     // opera 
     new UserAgentPropertyGeneratorPredicate("opera") 
     .getPredicateBlock() 
     .println("return (ua.indexOf('opera') != -1);") 
     .returns("'opera'"), 

    // webkit family (chrome, safari and chromeframe). 
    new UserAgentPropertyGeneratorPredicate("safari") 
    .getPredicateBlock() 
     .println("return (ua.indexOf('webkit') != -1);") 
     .returns("'safari'"), 

     // IE9 
     new UserAgentPropertyGeneratorPredicate("ie9") 
     .getPredicateBlock() 
     .println("return (ua.indexOf('msie') != -1 && ($doc.documentMode >= 9));") 
     .returns("'ie9'"), 

     // IE8 
     new UserAgentPropertyGeneratorPredicate("ie8") 
     .getPredicateBlock() 
     .println("return (ua.indexOf('msie') != -1 && ($doc.documentMode >= 8));") 
     .returns("'ie8'"), 

     // IE6 
     new UserAgentPropertyGeneratorPredicate("ie6") 
     .getPredicateBlock() 
     .println("var result = /msie ([0-9]+)\\.([0-9]+)/.exec(ua);") 
     .println("if (result && result.length == 3)") 
     .indent() 
     .println("return (makeVersion(result) >= 6000);") 
     .outdent() 
     .returns("'ie6'"), 

     // gecko family 
     new UserAgentPropertyGeneratorPredicate("gecko1_8") 
     .getPredicateBlock() 
     .println("return (ua.indexOf('gecko') != -1);") 
     .returns("'gecko1_8'"), 
    }; 

    static void writeUserAgentPropertyJavaScript(SourceWriter body, SortedSet<String> possibleValues) { 

     // write preamble 
     body.println("var ua = navigator.userAgent.toLowerCase();"); 
     body.println("var makeVersion = function(result) {"); 
     body.indent(); 
     body.println("return (parseInt(result[1]) * 1000) + parseInt(result[2]);"); 
     body.outdent(); 
     body.println("};"); 

     // write only selected user agents 
     for (int i = 0; i < predicates.length; i++) { 
      if (possibleValues.contains(predicates[i].getUserAgent())) { 
       body.println("if ((function() { "); 
       body.indent(); 
       body.print(predicates[i].toString()); 
       body.outdent(); 
       body.println("})()) return " + predicates[i].getReturnValue() + ";"); 
      } 
     } 

    // default return 
    body.println("return 'unknown';"); 
} 

    public String generate(TreeLogger logger, SortedSet<String> possibleValues, String fallback, SortedSet<ConfigurationProperty> configProperties) { 
     for (String value : possibleValues) { 
      if (!VALID_VALUES.contains(value)) { 
       logger.log(TreeLogger.WARN, "Unrecognized " 
         + UserAgentGenerator.PROPERTY_USER_AGENT + " property value '" 
         + value + "', possibly due to UserAgent.gwt.xml and " 
         + UserAgentPropertyGenerator.class.getName() 
         + " being out of sync." + " Use <set-configuration-property name=\"" 
         + UserAgentGenerator.PROPERTY_USER_AGENT_RUNTIME_WARNING 
         + "\" value=\"false\"/> to suppress this warning message."); 
      } 
     } 
     assert predicates.length == VALID_VALUES.size(); 
     StringSourceWriter body = new StringSourceWriter(); 
     body.println("{"); 
     body.indent(); 
     writeUserAgentPropertyJavaScript(body, possibleValues); 
     body.outdent(); 
     body.println("}"); 
     return body.toString(); 
    } 
} 

MySystem.gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module rename-to='mysystem'> 
<!-- some inherits --> 
<property-provider name="user.agent" generator="com.google.gwt.user.rebind.mysystemUserAgentPropertyGenerator"/> 
<inherits name="com.google.gwt.user.UserAgent"/> 
<set-configuration-property name="user.agent.runtimeWarning" value="false"/> 
<!-- the rest of the file --> 
<extend-property name="locale" values="en, it" /> 
</module> 

К сожалению, делая, таким образом, я не решить проблему Может кто-нибудь предложить мне любую другую вещь пытаться?

Спасибо

Angelo

ответ

2

Путь модули GWT загружены, все, что определено позже переопределение что-то определенные ранее, и <inherits> обрабатываются, если унаследованы модуль был включен в месте.

Вы должны таким образом переместить свою <property-provider> строку после<inherits name="com.google.gwt.user.UserAgent"/> линия.

+0

Hi Thomas Прежде всего спасибо, что ответили. К сожалению, я попробовал то, что вы предложили, но я всегда получаю ту же ошибку ... Я схожу с ума ... это с 4 дней, когда я сражаюсь :( –

0

Вы пытались очистить все кеши в браузере и вашей среде IDE? В intellij мне часто приходится останавливать идею intellij, очистить кеш/gwt dieclipse и снова начать intellij, чтобы избавиться от таких побочных проблем. То же самое с затмением.

+0

Привет, Роберт, спасибо за ответ; IDE: я использую maven для создания моей системы, и я всегда запускаю maven с чистыми установками, я просто пытался повторить тест, удалив все кеши в моем IE8, но, к сожалению, я всегда получаю ту же ошибку ... это так расстраивает –

Смежные вопросы