【问题标题】:GWT 2.7: Warn users they are using an unsupported browserGWT 2.7:警告用户他们正在使用不受支持的浏览器
【发布时间】:2015-02-25 18:41:05
【问题描述】:

我最近将我的应用程序从 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 无法检测到浏览器并且使用 延迟绑定,您可以显示提供的应用程序可能不会显示的警告 正常工作,因为 GWT 通常不支持浏览器。

--J.

Source

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

类似问题和帖子

【问题讨论】:

    标签: gwt browser-detection gwt-2.7


    【解决方案1】:

    您应该可以为此使用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 在这种情况下会有所帮助,但也许看看)

    【讨论】:

    • 这看起来和我想做的一模一样。不幸的是,它在我的应用程序中不起作用。我将该代码放入我的主 html 页面中。当我以文档模式 7 加载页面时,这些函数都不会被调用。
    【解决方案2】:

    有一个简单的方法:

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

    【讨论】:

    • 这个解决方案没问题,但我想说它与我的选项 #1 相同。无法捕获 GWT 不支持的所有浏览器。
    • 以为是旧的IE浏览器。
    猜你喜欢
    • 2019-03-15
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    相关资源
    最近更新 更多