Javascript检测不再工作
Javascript detection not working anymore
这个周末之后,我的Wicket应用程序无法再正确检测javascript了。它在我的虚拟主机,本地机器上不起作用,我也在另一台计算机上测试了它。
我的检测脚本:
WebClientInfo clientInfo = (WebClientInfo)WebSession.get().getClientInfo();
if(!clientInfo.getProperties().isJavaEnabled()){
System.out.println("not enabled!");
WebSession.get().setClientInfo(null);
}
加上应用程序类中的这个:
getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
我还从头开始创建了一个检票口应用程序,结果相同,没有 JavaScript 检测。
在写这篇文章时,我在Internet Explorer中检查了它。适用于IE 8 + 9。不适用于 FF 11.0。检票口版本是 1.5.5。
任何人都可以确认此行为吗?(可能值得JIRA
...更新:我找到了这种行为的原因。 isJavaEnabled
检查是否启用了Java(而不是Javascript)。Firefox 在 4 月 2 日(静默地)阻止了 Java 插件,因此没有设置 https://addons.mozilla.org/en-US/firefox/blocked/p80 javaEnabled 属性。笨重。
可能这从来没有奏效,而且它似乎是愚蠢的运气。
查看 ClientProperties.isJavaEnabled() 的 javadocs,它返回客户端的 navigator.javaEnabled
属性,该属性反映是否启用了 Java,而不是 JavaScript。
Java != JavaScript。
另一种方法是使用"用户代理"字符串:
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
,从而确定 Wicket 在 Javascript 不存在时的行为。
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 当我更改innerHtml时,引导选项卡事件不再工作
- 天气应用 API 不再工作
- AngularJS Dropdown在使用指令后不再工作
- 虚拟键盘在更新到 Chrome v50 后不再工作
- $(这个)没有't在onClick事件中不再工作
- 当控制台不在't在chrome中打开,有些项目不再可点击(有些js调用停止工作)
- 升级至Knockout 3.0.0,Templates/Custom Binding Handlers不再工作
- 自定义绑定在KnockoutJS 3.0中不再工作
- 为什么不是'我的jQuery不再工作了
- .replace() 不再为我工作
- 为什么 ngClick 在$compile后不再工作
- AngularJs 路由不再工作.地址栏更改,但视图不会更改
- yam.platform.setAuthToken在IE 8和IE 9中不再工作
- 节点.js版本已更改,脚本不再工作
- 是 ngAnimate 不再工作了
- .click() 不再工作 jquery.
- JS点击功能不再工作以更改链接颜色
- 谷歌地图API不再工作
- 事件处理程序在 html 重新呈现后不再工作