Java SWT Webbrowser小部件中的搜索字符串

Java SWT Webbrowser小部件中的搜索字符串,java,javascript,string,search,swt,Java,Javascript,String,Search,Swt,我编写了一个程序,其中包括来自swt的浏览器小部件。现在我导航到谷歌,想搜索字符串“图片”,例如。这是我的代码,但不起作用: browser.addProgressListener(new ProgressAdapter() { boolean firstCompleted = false; @Override public void completed(ProgressEvent evt) { if (!firstCompleted) {

我编写了一个程序,其中包括来自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()操作结果的整数
n
。如果
n==-1
没有这样的字符串,如果
n==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代码中还有一个附加的结束括号


是一个很好的教程。

n==1
只有在位置
1
处找到
search
时才会成立
n>=0
将表明它已被找到。是的,您是对的-已更改:)但程序无法工作,因为我无法将javascript中的值保存到java变量中-不是这样。。那么,如何将javascript值保存在java变量中呢?