问题描述
String window = "";ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine se = sem.getEngineByName("js"); try { String script = "function width(){return window.innerWidth;}"; se.eval(script); Invocable inv2 = (Invocable) se; String res=(String)inv2.invokeFunction("width"); System.out.println(res); window = res; } catch(Exception e) { e.printStackTrace(); } 报错javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "window" is not defined. (<Unknown source>#1) in <Unknown source> 其实我只是想通过JS取屏幕宽window.innerWidth再赋值给个java变量 请各位不吝赐教
解决方案
这个是不行的,window对象是代表打开浏览器,你不在java里执行肯定是不行的。你可以使用ajax,当前台获得屏幕的宽度之后你再传到后台,在后台获得这个屏幕的宽度就行了。可以参考http://www.w3schools.com/jsref/obj_window.asp
解决方案二:
java调用js,我的见识很浅,额。。 只知道ajax。
解决方案三:
window是浏览器内置对象,不属于javascript中的对象,所以会出现undefined错误,除非是在浏览器上下文环境中,否则不能使用
解决方案四:
我试了下 也是这个问题 貌似是这样不能直接用window对象,但是如果返回new Date().getTime()就没问题 不过返回的结果是double
解决方案五:
请恕我见识少,很想知道像这种用java来调用 JS,一般是用于什么场景的?