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

Get and set focus position in SWT browser

我想在 SWT 浏览器中获取和设置位置,但我不知道怎么做。

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

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

然后我启动了一个HTML文件:

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

到目前为止效果很好。 现在,我向下滚动页面以找到一个有趣的文本段落,然后单击一个菜单项来创建一种书签。 我的问题是:如何获得当前焦点位置 (x,y) 以记住文本中的点以及稍后如何将位置重置为 "apply" 特定书签?

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

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

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

return 值的类型取决于计算的代码。通过代码调试,看看实际的 return 类型是什么。

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

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

请注意 Javascript 是伪代码,实际上并不是 return 当前位置。

如果你 运行 进入 SWTExceptions,很可能文档还没有完全加载,你需要延迟 Javascript 代码的执行,直到它被加载满载,如下所述: