我写了一个程序,其中包含来自swt的浏览器小部件。现在我导航到谷歌并想要搜索字符串“图片”,例如。这是我的代码,但它不起作用:
browser.addProgressListener(new ProgressAdapter() {
boolean firstCompleted = false;
@Override
public void completed(ProgressEvent evt) {
if (!firstCompleted) {
String search = "Pictures";
// this row doesn't work... - not yet ;)
int n = (int) browser.evaluate("return str.search(\"" + search + "\"));");
if (n == -1) {
// string not found
} else if(n >= 1) {
// string found
}
firstCompleted = true;
}
}
});
JavaScript应检查字符串是否可用并返回包含str.search() - Operation结果的整数n
。如果n == -1
没有这样的字符串,如果n == 1
在网站上找到该字符串。
答案 0 :(得分:1)
这是一个非常简单的示例,它将从JavaScript返回一个值到Java并将其打印到命令行:
public static void main(String[] args)
{
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());
final Browser browser = new Browser(shell, SWT.NONE);
browser.setText("......baz");
Button b = new Button(shell, SWT.PUSH);
b.setText("Do something");
b.addListener(SWT.Selection, new Listener()
{
public void handleEvent(Event e)
{
String baz = "baz";
boolean result = (boolean) browser.evaluate("return window.find('" + baz + "');");
System.out.println(result);
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
请注意,我使用了与您不同的JS函数,并且在JS代码中有一个额外的结束括号。
Here是一个很好的教程。