SWT浏览器小部件中的搜索字符串

Search string in SWT Webbrowser Widget

本文关键字:搜索 字符串 浏览器 小部 SWT      更新时间:2023-09-26

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

这里有一个非常简单的例子,它将从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代码中有一个额外的右括号。

这是一个很好的教程。