在SWT Webbrowser小部件中搜索字符串

时间:2013-07-19 22:55:21

标签: java javascript string search swt

我写了一个程序,其中包含来自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在网站上找到该字符串。

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是一个很好的教程。