本周末之后,我的Wicket应用程序无法再正确检测到javascript。它不能在我的webhoster上,在我的本地机器上运行,而且我也在另一台计算机上进行了测试。
我的检测脚本:
WebClientInfo clientInfo = (WebClientInfo)WebSession.get().getClientInfo();
if(!clientInfo.getProperties().isJavaEnabled()){
System.out.println("not enabled!");
WebSession.get().setClientInfo(null);
}
在应用程序类中加上这个:
getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
我还从头开始创建了一个wicket应用程序,结果相同,没有javascript检测。
写这篇文章的时候,我在Internet Explorer中查了一下。使用IE 8 + 9可以正常工作。不适用于FF 11.0。 Wicket版本是1.5.5。
任何人都可以确认这种行为吗? (可能是JIRA值得......)
更新:我找到了此行为的原因。 isJavaEnabled
检查是否启用了Java(而不是Javascript)。 Firefox(默默地)在4月2日阻止了Java插件,因此没有设置javaEnabled属性:https://addons.mozilla.org/en-US/firefox/blocked/p80。繁琐。
答案 0 :(得分:3)
可能这从来没有奏效,事实上似乎是运气不好。
查看ClientProperties.isJavaEnabled()的javadoc,它会返回客户端的navigator.javaEnabled
属性,该属性反映是否启用了 Java ,而不是 JavaScript 。< / p>
Java!= JavaScript。
答案 1 :(得分:1)
另一种方法是使用'user agent'字符串:
public boolean javascriptSupported() {
WebRequest webRequest = (WebRequest) getRequest();
String userAgent = webRequest.getHeader("User-Agent");
if (userAgent == null || userAgent.startsWith("Googlebot")) {
return false;
}
return true;
}
我已将此用于搜索引擎的AjaxLazyLoadPanel
,但您需要扩展上面的用户代理列表。
还有WebRequest.isAjax()
,它也可能有用,因为它用于确定使用的RedirectPolicy
,因此,当Javascript不存在时,Wicket的行为。