1

私はブラウザを持っていて、次のような方法でブラウザにコンテンツを追加しています。

browser.setText(browser.getText() + newText());

次に、ビュー内に収まらないほどHTMLが多すぎる場合は、ブラウザーを下にスクロールする必要があるため、呼び出しのたびにsetText()これも実行します(Webの他の場所でのこの質問への回答で示唆されています)。

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 の後、終了 body タグの前に HTML コードが追加されました。

于 2012-10-22T16:19:20.173 に答える