0

提案ボックスを作成し、巨大なテキストを含む HTML ページを生成したので、スクロールできます。1. おすすめリストを表示 2. ページをスクロール

提案リストのポップアップボックスは、ページのスクロールに合わせて移動しますが、ページのスクロールやページの移動時に非表示にならないようにしたいです。

私が理解しているように、ポップアップには絶対的な位置があります。しかし、CSS以外のソリューションはありますか。


に答えます:

Windowにスクロールハンドラーを追加しようとしましたが、この場合にのみ、イベントを持っているときにのみイベントを処理することがわかりました二巻。大きなテキストの場合のように、ページをスクロールするスクロールが1つある場合-何も呼び出されません

4

1 に答える 1

1

を構築するときSuggestBoxに、独自のSuggestOracleTextBoxおよびを提供できますSuggestionDisplayDefaultSuggestionDisplay提案リストを非表示にするために使用できます。でできますWindow.scrollHandler

コードは次のとおりです。

MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
oracle.add("one");
oracle.add("two");
oracle.add("three");

TextBox box = new TextBox();
final DefaultSuggestionDisplay display = new DefaultSuggestionDisplay();

SuggestBox suggestBox = new SuggestBox(oracle, box, display);

Window.addWindowScrollHandler(new ScrollHandler() {
    @Override
    public void onWindowScroll(ScrollEvent event) {
        display.hideSuggestions();
    }
});

使用する必要があることに注意してください-非推奨の hideSuggestionListメソッドDefaultSuggestionDisplayに関するドキュメントを参照してください。

この例ですべてが説明されることを願っています。

また、ownSuggestionDisplayを使用しない場合はDefaultSuggestionDisplayとにかく使用することも確認しました。そのため、さらに簡単に行うことができます。

((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions();

編集:

ウィンドウ全体がスクロールされるのではなく、一部のパネルのコンテンツのみがスクロールされる場合は、パネルに を追加できますScrollHandler

panel.addDomHandler(new ScrollHandler() {
    @Override
    public void onScroll(ScrollEvent event) {
        ((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions();
    }
}, ScrollEvent.getType());
于 2016-09-29T07:58:11.067 に答える