当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Java调用javascript
发布时间:2010/9/1 11:02:01 来源:城市学习网 编辑:ziteng
  package co.test;
  import java.io.FileReader;
  import java.io.LineNumberReader;
  import org.mozilla.javascript.Context;
  import org.mozilla.javascript.Function;
  import org.mozilla.javascript.Scriptable;
  public class JSExploration
  {
  private Context cx;
  private Scriptable scope;
  public JSExploration()
  {
  this.cx = Context.enter();
  this.scope = cx.initStandardObjects();
  }
  public Object runJavaScript(String filename)
  {
  String jsContent = this.getJsContent(filename);
  Object result = cx.evaluateString(scope, jsContent, filename, 1, null);
  return result;
  }
  private String getJsContent(String filename)
  {
  LineNumberReader reader;
  try
  {
  reader = new LineNumberReader(new FileReader(filename));
  String s = null;
  StringBuffer sb = new StringBuffer();
  while ((s = reader.readLine()) != null)
  {
  sb.append(s).append("\n");
  }
  return sb.toString();
  }
  catch (Exception e)
  {
  // TODO Auto-generated catch block
  e.printStackTrace();
  return null;
  }
  }
  public Scriptable getScope()
  {
  return scope;
  }
  public static void main(String[] args)
  {
  String filename = System.getProperty("user.dir") + "/jsmap.js";
  JSExploration jsExploration = new JSExploration();
  Object result = jsExploration.runJavaScript(filename);
  Scriptable scope = jsExploration.getScope();
  Function sum = (Function) scope.get("sum", scope);
  Function isPrime = (Function)sum.call(Context.getCurrentContext(), scope, sum, new Object[] {2,8});
  Object ss = isPrime.call(Context.getCurrentContext(), sum, isPrime, new Object[] {2,8});
  System.out.println(Context.toString(ss));
  }
  }
  试验了一个java 调用 javascript 的例子,如果把jsmap.js中的与this 有关的代码注销的话程序就可以正常运行。不住销掉的话就会报个运行时错误。。。
  js 代码如下(有关this 的代码已注销):
  function  sum(x, y) {
  // this.formulaeObject = null;
  // this.formulaeObject["vager"] = function (c, d) {
  // return (c + d)/2;
  // };
  var vager = 1000;
  return function (x,y){return x + y + vager;} ;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved