求教关于JAVA调用js的问题

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: Ref
erenceError: "window" is not defined. (#1) in

其实我只是想通过JS取屏幕宽window.innerWidth再赋值给个java变量 请各位不吝赐教

5个回答

这个是不行的,window对象是代表打开浏览器,你不在java里执行肯定是不行的。
你可以使用ajax,当前台获得屏幕的宽度之后你再传到后台,在后台获得这个屏幕的宽度就行了。
可以参考http://www.w3schools.com/jsref/obj_window.asp

vfrweq
vfrweq OK 谢谢回复
6 年多之前 回复
jinandmei
jinbingchuan 嗯,结贴就给了,无所谓,只要对你帮助就行了
6 年多之前 回复
vfrweq
vfrweq 另外这分这么给? 是不是结帖了分就已经给过去了? 刚才您的分我没在意是多少...
6 年多之前 回复
vfrweq
vfrweq 我这边情况比较DT 被限制了用JS跳转 他们只让a标签里href过去 不过您既然已经给了结论这帖就可以结了 非常感谢
6 年多之前 回复
jinandmei
jinbingchuan 是的,你在java里肯定是不行的 function getWidth(url) { window.location = url?width=window.innerWidth; } <a onclick ='getWidth(url)' href='#'>点击</a>
6 年多之前 回复
vfrweq
vfrweq 感谢 是指我在java里这样执行肯定不行? 问这问题的目的是想只用a标签把window.innerWidth的值带到后台 如果可以的话...
6 年多之前 回复

请恕我见识少,很想知道像这种用java来调用 JS,一般是用于什么场景的?

vfrweq
vfrweq 这方法我也今天搜了下才知道...希望在不使用JS跳转的情况下取到屏幕宽传到后台 只会用window.innerWidth取 所以想整个办法把window.innerWidth带到后台去 最好能用a标签后面接参数带过去这样 等了这么久终于有人理我了T_T
6 年多之前 回复

我试了下 也是这个问题 貌似是这样不能直接用window对象,但是如果返回new Date().getTime()就没问题 不过返回的结果是double

vfrweq
vfrweq 额 感谢回复
6 年多之前 回复

window是浏览器内置对象,不属于javascript中的对象,所以会出现undefined错误,除非是在浏览器上下文环境中,否则不能使用

vfrweq
vfrweq 在浏览器上下文环境中是咋个写法?
6 年多之前 回复

java调用js,我的见识很浅,额。。 只知道ajax。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!