在SWT浏览器中获取并设置焦点位置

时间:2015-07-23 22:32:41

标签: java browser swt

我想在SWT浏览器中设置并设置位置,但我不知道如何。

首先,我创建了一个浏览器控件:

Browser browser = new Browser(shell, SWT.NONE);

然后我发布了一个HTML文档:

File file = new File("C:\\test\\index.html");
browser.setUrl(file.toURI().toString());

到目前为止完美无缺。 现在,我向下滚动页面以查找有趣的文本段落,然后单击菜单项以创建一种书签。 我的问题是:如何获得当前焦点位置(x,y)以记住文本中的点,以及如何稍后重置位置以“应用”特定书签?

1 个答案:

答案 0 :(得分:1)

您可以通过Browser#evaluate()Browser#execute()与浏览器内容进行互动。 这两种方法都允许在浏览器文档的上下文中执行Javascript。

要发送查询当前位置的Javascript代码,请使用以下内容:

Object position = browser.evaluate( "window.getCurrentPosition();" );

返回值的类型取决于所评估的代码。通过代码进行调试,看看实际的返回类型是什么。

如果您对返回值不感兴趣,请使用execute。例如,要设置您将使用的当前位置:

browser.evaluate( "window.setCurrentPosition( x, y );" );

请注意,Javascript是伪代码,并不会实际返回当前位置。

如果您遇到SWTException,则文档可能尚未完全加载,您需要延迟执行Javascript代码,直到完全加载为止,如下所述: https://stackoverflow.com/a/7802717/2986905