求教关于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: 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,一般是用于什么场景的?

时间: 2024-11-01 16:38:51

求教关于JAVA调用js的问题的相关文章

Java与js的交互

 在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互.android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码,这样我们可以实现很多原来做不了的功能,比如点击网页上的电话号码后,手机自动拨打电话,点击网页中的笑话,自动发送短信等. 废话不多说,这次教程的目标如下 android 中的java代码调用webview里面的js脚本 webview中的js脚

Android WebView Java与Js通信

1.Activity 中 事件修改 webview中内容 2.webview中事件修改activity中的内容 3.webview中的事件,响应js函数 主要代码实现:  @SuppressLint("JavascriptInterface") public class MainActivity extends Activity { private static final String TAG="LocalBrowser"; private final Handl

zk 怎么用java 调用前台的js函数

问题描述 zk 怎么用java 调用前台的js函数 单位的项目用的zk框架,今天经理要求在界面中加入echarts图表,我想问下,后台java里怎么把json数据传到前台的js 函数里 解决方案 http://quzhan87com.iteye.com/blog/1061964 看这篇文章能解决你的问题. 解决方案二: 前台用ajax调用后台的java,接收后台的数据 解决方案三: http://zhidao.baidu.com/link?url=o8q9FOoe6FC6inMGrb6BPTrC

java或者js怎么调用浏览器文件下载框中的保存,或者打开选择框

问题描述 java或者js怎么调用浏览器文件下载框中的保存,或者打开选择框 浏览器下载文件时,有个打开,有个保存,java或者js能通过代码调用么? 怎么操作 解决方案 js设置location跳转到你要下载的文件地址就好了 location='要下载的文件地址' 如果你的文件是文本文件,图片这种浏览器能解析的,你需要动态设置content-disposition为attachment,然后输出文件才能弹出保存文件对话框,要不是直接显示在浏览器里面的,具体看下面的链接 http://www.qi

求教如何java程序调用cmd 连接mysql数据库读取sql文件

问题描述 求教如何java程序调用cmd 连接mysql数据库读取sql文件 开始 -> 运行 -> 输入CMD D: cd mysqlbin mysql -u root -p123456 test <d:a.sql 这是在命令行执行的 谁能告诉我JAVA要怎么写 谢谢啦 解决方案 http://www.cnblogs.com/taoweiji/archive/2012/12/11/2812852.html 解决方案二: java本身就是在虚拟机里面运行的,不可能去调用Windows的组

求教大神,java调用oracle把数据库记录下载到本地的工程

问题描述 求教大神,java调用oracle把数据库记录下载到本地的工程 如上图,已经用java调用dos命令行进入sql界面,现在如何编写java代码来执行以下:sset linesize 999 set pagesize 999 spool XX_EVA_RAROC_PKG.sql select text from all_source where name='XX_EVA_RAROC_PKG' order by line; spool off; 用java直接连数据库是否也可行,求教大神提

C++中调用JS代码的问题

前段时间开发了一个COM组件配合web前端使用,遇到了C++中调用JS代码的问题,在网上查了很多资料,现 总结一下,留作以后察看. C++中调用JS代码主要有两种情况:1. IE线程中调用:2. 其他线程调用 1. IE线程中调用:这种情况网上已经有很多资料,下面列出示列代码: C++代码 STDMETHODIMP CJsInvoker::InvokeJsFunc(LONG para1, LONG para2, VARIANT jsFunction, LONG* retValue) { CCom

java调用固有方法

我们先从一个简单的例子开始:一个Java程序调用固有方法,后者再调用Win32的API函数MessageBox(),显示出一个图形化的文本框.这个例子稍后也会与J/Direct一志使用.若您的平台不是Win32,只需将包含了下述内容的C头: #include <windows.h> 替换成: #include <stdio.h> 并将对MessageBox()的调用换成调用printf()即可. 第一步是写出对固有方法及它的自变量进行声明的Java代码:   class ShowM

java与js代码互调示例代码

用到java和js方法互调,在用HTML5做跨平台应用开发时经常会用到,在这里分享一些自己在实际开发过程中的用法,希望对初学者有所帮助   在用HTML5做跨平台应用开发时,尝尝会用到java和js方法互调的问题,对初学者而言,可能会有点难,在这里分享一些自己在实际开发过程中的用法,希望对你有帮助: 首先是js代码调用java代码介绍: 复制代码 代码如下: public class CzingLBWebMain extends DroidGap { @Override public void