Mi archivo HTML tiene una función javascript xxx_return(), que devolverá un valor de cadena. ¿Hay alguna manera de que pueda tomar este valor de la capa de Java ?.Cómo hablar con una función de Javascript desde SWT
Estoy usando SWT shell para mostrar este html. ¿SWT lleva alguna característica para obtener los valores de retorno de una función de script?
edición:
Mi código es algo como la siguiente: paquete test.html.simulation;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class BrowserExample{
public static void main(String[] args)
{
Display display = new Display();
final Shell shell = new Shell(display);
String html="";
Object ob=null;
shell.setText("Browser Example");
shell.setSize(500, 350);
final Browser browser = new Browser(shell, SWT.NONE);
browser.setBounds(5, 75, 600, 400);
browser.setUrl("http://localhost/test/tryxml.html");
shell.open();
//System.out.println(browser.getUrl());
//try
{
html=(String)browser.evaluate("returnHTML();");
}/*catch(SWTException e)
{
System.out.println(e.getMessage());
}*/
System.out.println(html);
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
Este código me da una excepción SWT como objeto esperado:
Exception in thread "main" org.eclipse.swt.SWTException: Object expected
at org.eclipse.swt.browser.WebBrowser$EvaluateFunction.function(Unknown Source)
at org.eclipse.swt.browser.WebSite.Invoke(Unknown Source)
at org.eclipse.swt.browser.WebSite$7.method6(Unknown Source)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6(Unknown Source)
at org.eclipse.swt.internal.ole.win32.COM.VtblCall(Native Method)
at org.eclipse.swt.internal.ole.win32.IDispatch.Invoke(Unknown Source)
at org.eclipse.swt.ole.win32.OleAutomation.invoke(Unknown Source)
at org.eclipse.swt.ole.win32.OleAutomation.invoke(Unknown Source)
at org.eclipse.swt.browser.IE.execute(Unknown Source)
at org.eclipse.swt.browser.WebBrowser.evaluate(Unknown Source)
at org.eclipse.swt.browser.Browser.evaluate(Unknown Source)
at test.html.simulation.BrowserExample.main(BrowserExample.java:29)
En el java script que he escrito una función en la etiqueta de secuencia de comandos como:
<script>
function returnHTML()
{
var str=document.body.innerHTML;
//alert(str);
return str;
}
</script>
¿Alguien puede encontrar el error en esto ?. No entiendo dónde golpea el error.
Gracias.
He editado mi pregunta. Hice lo que dijiste, pero me da una excepción. ¿Puede encontrar el error? Gracias – Kris
Hay un error con respecto a 'Browser # evaluate' y null return values con IE9: https://bugs.eclipse.org/bugs/show_bug.cgi?id=344597. Para solucionar esto, puede hacer 'Browser.evaluate (" foo() || ''; ")' ¿Puede simplificar esto a una función de Javascript que solo devuelve una cadena constante? ¿Eso tiene éxito? –
Pude recuperar el String de javascript llamando a evaluar como Browser.evaluate ("return foo()"); – Kris