¿Cómo ejecutar javascript con rhino en java?

Dar el HTML de una página web en una variable de cadena, ¿cómo puedo ejecutar JavaScript en ella usando Rhino?

He leído el tutorial en la página de inicio de Rhinos sin suerte.

preguntado el 27 de agosto de 11 a las 16:08

Rhino es solo un intérprete de JavaScript, no está vinculado al DOM y no interpreta HTML. ¿Está seguro de que no está buscando un contenedor de navegador web en Java? -

4 Respuestas

Puede utilizar Java Scripting Engine JSR-223.

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
try {
    jsEngine.eval("print('Hello, world!')");
} catch (ScriptException ex) {
      ex.printStackTrace();
}

Guía del programador de secuencias de comandos de Java

Respondido 27 ago 11, 21:08

HtmlUnit es un producto construido sobre Rhino que permite probar aplicaciones web que contienen JavaScript del lado del cliente. No lo he usado yo mismo, pero se lo recomendé a un desarrollador que lo hizo y quedó muy satisfecho con él.

Es difícil saber si esto es lo que desea, ya que su pregunta original no dice mucho sobre por qué desea ejecutar JavaScript en primer lugar.

Respondido 29 ago 11, 02:08

No puedes hacer eso de forma directa. Rhino es un intérprete de JavaScript, pero ciertamente lo hace no significa que puede hacer lo que hace un navegador web.

Su fuente HTML puede tener <script> bloques en él y puede hacer referencia a scripts externos. Incluso si pudiera extraer las fuentes del script del HTML, lo que tendría que hacer, ya que Rhino no sabe nada sobre HTML, se enfrentaría a un problema mayor: el DOM.

Probablemente debería trabajar con algún tipo de solución de navegador incrustada (o esclava).

Respondido 27 ago 11, 21:08

Rhino solo le permitirá ejecutar JavaScript independiente.

Si desea ejecutar JavaScript en HTML, necesita un navegador que proporcione tiempo de ejecución; puede usar WebDriver para eso.

Que estás tratando de hacer ?

Respondido 28 ago 11, 00:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.