【问题标题】:Manipulate JavaScript using Java使用 Java 操作 JavaScript
【发布时间】:2012-04-05 10:34:08
【问题描述】:

我正在使用特定的 JavaScript 连接到网络服务器。 (使用 HttpURLConnection atm) 我需要的是一个可以操作 JavaScript 函数的连接。 之后我想再次运行整个 JavaScript。

我希望以下函数始终返回“new FlashSocketBackend()”

function createBackend() {
    if (flashSocketsWork) {
        return new FlashSocketBackend()
    } else {
        return new COMETBackend()
    }
}

我必须为此使用 HtmlUnit 吗? 连接、操作和重新运行脚本的最简单方法是什么?

谢谢。

【问题讨论】:

  • “操作 JavaScript 函数”是什么意思?您希望浏览器将 JavaScript 代码发送到服务器,或者连接后服务器能够在客户端调用 javascript 函数?
  • 我不确定这是否有意义。 HttpURLConnection 是一个 Java 类。 Java 和 JavaScript 之间基本上没有关系。也许试着改写你的问题。
  • 是的,我想更改一个稍后将由服务器调用的函数。
  • @Graham Clark,HttpURLConnection 是我用来连接到存储 JavaScript 的服务器的类
  • @Tom 很好。但是,HUC 仅处理数据传输(它仅在连接到网页时执行“网络浏览器所做的事情”)。 你需要让它做一些有用的事情。例如,它是一个 JavaScript 文件吗?可以使用 WebDAV 吗?服务器上是否有其他支持或自定义协议/Rest API?等等。这太宽泛了,不能成为“一个真正的问题”。

标签: java javascript htmlunit


【解决方案1】:

使用 HtmlUnit 你确实可以做到。

即使您无法操作现有的 JS 函数,但您可以在现有页面上执行您希望的 JavaScript 代码。

例子:

WebClient htmlunit = new WebClient();
HtmlPage page = htmlunit.getPage("http://www.google.com");
page = page.executeJavaScript("<JS code here>").getNewPage(); 

//manipulate the JS code and re-excute
page =  page.executeJavaScript("<manipulated JS code here>").getNewPage();

//manipulate the JS code and re-excute
page =  page.executeJavaScript("<manipulated JS code here>").getNewPage();

更多: http://www.aviyehuda.com/2011/05/htmlunit-a-quick-introduction/

【讨论】:

    【解决方案2】:

    您最好的选择可能是使用Rhino — 一个完全用 Java 编写的开源 JavaScript 实现。使用window.location 加载您的页面,并希望运行您的 JavaScript 函数。我在Bringing the Browser to the Server 之前读过,似乎可行。

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      相关资源
      最近更新 更多