我最近将我的应用程序从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。
我不想为不支持的浏览器设置默认排列。我希望该网站无法正常工作并显示警告。所以这个解决方案并没有真正提供我想要的东西。
类似的问题&帖子
答案 0 :(得分:2)
您应该可以使用onLoadErrorFn
:https://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)
有一种简单的方法:
<!--[if lt IE 8]>
<p>You are using an unsupportet browser. Please perform an update</p>
<![endif]-->
我认为选项3可能是最好的选项,但存在一个问题:这将启动实际应用程序(仍然可能不兼容)。
如果这是一个问题并且您想要一个明确的警告,您可以重写排列选择脚本(您需要使用即将发布的GWT版本更新脚本)
您需要复制此来源:
您可以添加以下内容:
$wnd.Location.replace('nosupported.html');
第90行和第91行之间的