Mój plik HTML ma funkcję javascript xxx_return(), która zwróci wartość ciągu. Czy jest jakiś sposób mogę wziąć tę wartość z warstwy Java ?.Jak rozmawiać z funkcją JavaScript z SWT
Używam powłoki SWT do wyświetlania tego html. Czy SWT przenosi jakąś funkcję, aby uzyskać wartości zwracane przez funkcję skryptu?
edit:
Mój kod jest coś takiego jak poniżej: pakietu 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();
}
Ten kod daje mi wyjątek SWT podobnego obiektu spodziewanych:
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)
w skrypcie java Pisałem funkcję w tagu skryptu jak:
<script>
function returnHTML()
{
var str=document.body.innerHTML;
//alert(str);
return str;
}
</script>
Czy ktoś może znaleźć błąd w tym ?. Nie rozumiem, gdzie trafia błąd.
Dzięki.
Zmieniłem moje pytanie. Zrobiłem tak, jak powiedziałeś, ale to daje mi wyjątek. Czy możesz znaleźć błąd? Dzięki – Kris
Istnieje błąd dotyczący "Przeglądarki # wartości" i wartości zwracanych null z IE9: https://bugs.eclipse.org/bugs/show_bug.cgi?id=344597. Aby obejść ten problem, można wykonać polecenie 'Browser.evaluate (" foo() || ''; ")' Czy możesz uprościć to do funkcji JavaScript, która po prostu zwraca stały ciąg znaków? Czy to się udaje? –
Mogę pobrać String z javascript, wywołując assessment jako Browser.evaluate ("return foo()"); – Kris