1

我有一个浏览器,我正在以类似于以下方式向其中添加内容:

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");

}
4

2 回答 2

0

好吧,我想出了一个方法来做到这一点。它与我上面的方法非常相似,只是代替

browser.setText(browser.getText() + "<p>weee!!</p>");

我用了

String stringToAdd = "wee";
browser.execute(String.format("document.write('%s')", stringToAdd
                .replace("\\", "\\\\")
                .replace("'", "\\'")
                .replace("\"", "\\\"")));

仍然不确定我最初的方法有什么问题......

于 2012-07-20T16:02:46.487 回答
0

我在我的一个项目中做了类似的事情,但是我没有使用“document.write('%s')”,而是使用了“document.body.insertAdjacentHTML('beforeEnd', '%s')”。这样做会在 HTML 的 body 块中添加 HTML 代码,在所有其他 HTML 之后,但在结束 body 标记之前。

于 2012-10-22T16:19:20.173 回答