Il mio file HTML ha una funzione javascript xxx_return(), che restituirà un valore stringa. C'è un modo in cui posso prendere questo valore dal layer Java ?.Come parlare con una funzione Javascript da SWT
Sto usando la shell SWT per visualizzare questo html. SWT ha qualche funzione per ottenere i valori di ritorno di una funzione di script?
edit:
Il mio codice è qualcosa di simile di seguito: pacchetto 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();
}
Questo codice mi dà un'eccezione SWT come oggetto previsto:
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)
Nello script java ho scritto una funzione nel tag script come:
<script>
function returnHTML()
{
var str=document.body.innerHTML;
//alert(str);
return str;
}
</script>
Qualcuno può trovare l'errore in questo ?. Non capisco dove colpisce l'errore.
Grazie.
Ho modificato la mia domanda. Ho fatto come hai detto, ma mi fa un'eccezione. Per favore, trova l'errore? Grazie – Kris
C'è un bug riguardo a 'Browser # evaluate' e valori di ritorno null con IE9: https://bugs.eclipse.org/bugs/show_bug.cgi?id=344597. Per ovviare a questo, puoi fare 'Browser.evaluate (" foo() || ''; ")' Puoi semplificarlo con una funzione Javascript che restituisce una stringa costante? Succede? –
Potrei recuperare la stringa da javascript, chiamando valutare come Browser.evaluate ("return foo()"); – Kris