【问题标题】:Javascript detection not working anymoreJavascript检测不再起作用
【发布时间】:2012-04-10 06:58:17
【问题描述】:

本周末之后,我的 Wicket 应用程序无法再正确检测到 javascript。它不适用于我的虚拟主机,在我的本地计算机上,我也在另一台计算机上对其进行了测试。

我的检测脚本:

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。麻烦。

【问题讨论】:

  • 自本周末以来,您的应用发生了哪些变化?长期以来,Wicket 本身在这方面没有任何变化。
  • 这很有趣,我什么都没做,整个周末都没有。不是我的网络应用程序,不是我的检票口版本,不是我的浏览器,主机没有任何改变(afaik,但我在本地计算机上遇到了同样的问题,我什么也没改变)。可能是一些奇怪的复活节彩蛋笑话......
  • 可能是 Firefox/Chrome 的更新禁用了对 Java 的支持(不是客户端的 JavaScript)。见stackoverflow.com/questions/2897333/…
  • 这也是我的假设,但自 3 月 13 日以来 11.0 已经发布。

标签: javascript wicket


【解决方案1】:

这可能从来没有奏效,而且它似乎是愚蠢的运气。

查看ClientProperties.isJavaEnabled() 的javadocs,它返回客户端的navigator.javaEnabled 属性,这反映了是否启用了Java,而不是JavaScript

Java != JavaScript。

【讨论】:

  • 我认为这只是糟糕的命名,谢谢。在 Internet 上找到的一些指南使用此方法进行 javascript 检测。我用 NoScript 插件对其进行了测试,它工作正常,但既然你提到了它,NoScript 也会阻止 Java-Applets,因此将 navigator.javaEnabled 设置为 false。然后我坚持使用旧的和简单的 noscript-tags(或者有“更好”的方法吗?)。
【解决方案2】:

另一种方法是使用“用户代理”字符串:

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

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多