我正在尝试从给定的功能中获取浏览器的文档模式,即IE。我知道在javascript中我们可以使用document.documentMode
来获取IE的文档模式。但是在Java中有什么方法吗?我有来自userAgent
的HttpServletRequest
字符串,但是我不能用它来获取文档模式。我已经使用ScriptEngine
在Java代码中执行javascript了,但是它给出了例外,即document元素不是确定的。请帮忙
ScriptEngine engine =
new ScriptEngineManager().getEngineByName("javascript");
String docversio = null;
String script = "function documentversion() { return document.documentMode }";
try {
engine.eval(script);
Invocable inv = (Invocable)engine;
try {
docversio = (String) inv.invokeFunction("documentversion");
} catch (NoSuchMethodException e) {
System.out.println("No such method");
e.printStackTrace();
}
if(null != docversio)
System.out.println("the document version is "+docversio);
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最佳答案
您在此处执行的操作是在服务器端执行JavaScript。您需要的是客户端浏览器上的JavaScript。实现所需目标的一种方法是将documentMode作为URL参数传递。这将在服务器上可用。
<script>
$(document).ready(function(){
if ( document.referrer == null || document.referrer.indexOf(window.location.hostname) < 0 ) {
window.location.href = window.location.href + "?documentMode=" + document.documentMode;
}
});
</script>
现在,URL参数documentMode将在
request.getParameter("documentMode")
中可用