我正在尝试从给定的功能中获取浏览器的文档模式,即IE。我知道在javascript中我们可以使用document.documentMode来获取IE的文档模式。但是在Java中有什么方法吗?我有来自userAgentHttpServletRequest字符串,但是我不能用它来获取文档模式。我已经使用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")中可用

10-08 04:10