0

我编写了一个程序,其中包含来自 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 应该检查字符串是否可用并返回n包含 str.search() 操作结果的整数。如果n == -1没有这样的字符串,如果n == 1在网站上找到了该字符串。

4

1 回答 1

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 代码中有一个额外的右括号。

是一个很好的教程。

于 2013-07-20T20:41:53.867 回答