0

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

我想向使用 IE6 或 IE7 的用户发出警告,警告他们的浏览器已过时且无法正常工作。目前,如果您使用其中一种浏览器访问应用程序,您会看到一个空白屏幕。

我知道有几种方法可以一起破解某些东西,但我更愿意使用GWT 方式,而不是一些破解。不支持的浏览器是否有 GWT 挂钩?

选项(黑客)一

把它放到我的 main.html 中:

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

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

选项(hack)二

GWT 在此处查找已编译的 JS:

gwt/myApp/ASDFKLSDJFLSFDJSLDFJLSJDFSDES.cache.js

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

gwt/myApp/undefined.cache.js

可以在那里创建undefined.cache.js和放置不受支持的浏览器代码。这显然是一个脆弱的解决方案,并且会随着未来的 GWT 更新而中断。

选项三

最近的补丁(在 GWT 2.7 中可用)允许您在 GWT 无法检测到浏览器时提供默认排列(例如 safari),并且通过延迟绑定,您可以显示一个警告,指出所提供的应用程序可能无法正常工作,因为浏览器通常不受支持由 GWT 提供。

——J。

资源

我不想为不受支持的浏览器设置默认排列。我希望该站点无法运行并显示警告。所以这个解决方案并没有真正提供我正在寻找的东西。

类似的问题和帖子

4

2 回答 2

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在这种情况下会有所帮助,但也许看看)

于 2015-02-26T13:00:36.497 回答
-1

有一个简单的方法:

有条件的评论

<!--[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 行之间

于 2015-02-25T19:24:34.207 回答