GWT 2.7:警告用户使用不受支持的浏览器

时间:2015-02-25 18:41:05

标签: gwt browser-detection gwt-2.7

我最近将我的应用程序从GWT 2.5升级到GWT 2.7。这导致我放弃了对IE6和IE7的支持。

我想向用户提供IE6或IE7,警告他们的浏览器已过时且不起作用。目前,如果您使用其中一个浏览器访问应用程序,则会出现空白屏幕。

我知道有几种方法我可以一起破解,但我宁愿使用 GWT方式,而不是一些黑客。是否有不受支持的浏览器的GWT钩子?

选项(黑客)一个

将其放入我的main.html:

if(document.documentMode === 6 || document.documentMode === 7){
    myUnsupportedBrowserWarningFunction();
}

这方面的潜在问题是,如果有人使用GWT无法识别的浏览器而且我不认识(移动歌剧?其他浏览器),他们仍然会得到一个空白页。

选项(黑客)两个

GWT在这里查找已编译的JS:

gwt/myApp/ASDFKLSDJFLSFDJSLDFJLSJDFSDES.cache.js

当有人使用不受支持的浏览器时,请求以下内容(并且未找到):

gwt/myApp/undefined.cache.js

可以创建undefined.cache.js并将不受支持的浏览器代码放在那里。这显然是一个脆弱的解决方案,并将打破未来的GWT更新。

选项三

  

最近的补丁(GWT 2.7中提供)允许您提供默认值   如果GWT无法检测到浏览器并且使用,则置换(例如safari)   延迟绑定您可以显示提供的应用程序可能没有的警告   因为浏览器通常不受GWT支持,所以工作正常。

     

- J。

Source

我不想为不支持的浏览器设置默认排列。我希望该网站无法正常工作并显示警告。所以这个解决方案并没有真正提供我想要的东西。

类似的问题&帖子

2 个答案:

答案 0 :(得分:2)

您应该可以使用onLoadErrorFnhttps://code.google.com/p/google-web-toolkit/issues/detail?id=8135

<script>
  function gwtLoadError(errMsg) {
    // GWT app couldn't load, reason in errorMsg
  }
</script>
<meta name="gwt:onLoadErrorFn" content="gwtLoadError">

或可能onPropertyErrorFn

<script>
  function gwtPropError(propName, allowedValues, actualValue) {
    if (propName == 'user.agent') {
      // unsupported browser
    }
  }
</script>
<meta name="gwt:onPropertyErrorFn" content="gwtPropError">

(我不认为 user.agent.runtimeWarning 会对这种情况有所帮助,但也许可以看看)

答案 1 :(得分:-1)

有一种简单的方法:

Conditional Comments

<!--[if lt IE 8]>
<p>You are using an unsupportet browser. Please perform an update</p>
<![endif]-->

我认为选项3可能是最好的选项,但存在一个问题:这将启动实际应用程序(仍然可能不兼容)。

如果这是一个问题并且您想要一个明确的警告,您可以重写排列选择脚本(您需要使用即将发布的GWT版本更新脚本)

您需要复制此来源:

https://gwt.googlesource.com/gwt/+/2.7.0/user/src/com/google/gwt/useragent/rebind/UserAgentPropertyGenerator.java

您可以添加以下内容:

$wnd.Location.replace('nosupported.html');
第90行和第91行之间的