我有一个浏览器,我正在以类似的方式添加内容:
browser.setText(browser.getText() + newText());
然后,当html太多而不适合视图时,我希望浏览器向下滚动,所以在每次调用setText()
之后我也会这样做(正如其他地方的问题答案所示)网络):
browser.execute("window.scrollTo(0, document.body.scrollHeight)");
然而,这不起作用!我也尝试使用锚点滚动到,但这也不起作用。
如何实现这一目标?相反,我的方法中的问题在哪里(似乎对其他人有效)?
由于
编辑:这是我的实际代码:
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
final Browser browser = new Browser(shell, SWT.NONE);
browser.setBounds(10, 10, 430, 220);
Button btnNewButton = new Button(shell, SWT.NONE);
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
browser.setText(browser.getText() + "<p>weeee!!!</p>");
browser.execute("window.scrollTo(0, document.body.scrollHeight)");
}
});
btnNewButton.setBounds(10, 236, 430, 32);
btnNewButton.setText("New Button");
}
答案 0 :(得分:0)
我已经找到 的方法来做到这一点。它与我的上述方法非常相似,只是代替
browser.setText(browser.getText() + "<p>weee!!</p>");
我用过
String stringToAdd = "wee";
browser.execute(String.format("document.write('%s')", stringToAdd
.replace("\\", "\\\\")
.replace("'", "\\'")
.replace("\"", "\\\"")));
仍不确定我的初步方法存在什么问题......
答案 1 :(得分:0)
我在我的一个项目中做了类似的事情,但是不使用“document.write('%s')”,而是使用了“document.body.insertAdjacentHTML('beforeEnd','%s')”。在HTML的主体块中添加HTML代码,在所有其他HTML之后,但在结束正文标记之前。