Javascript检测不再有效

时间:2012-04-10 06:58:17

标签: javascript wicket

本周末之后,我的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。繁琐。

2 个答案:

答案 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的行为。