代码之家  ›  专栏  ›  技术社区  ›  Michiel Borkent

在GWT中设置所选文本(以便更容易复制粘贴)

  •  1
  • Michiel Borkent  · 技术社区  · 14 年前

    在GWT中,显然必须使用一些Flash组件来更改剪贴板。由于我不想使用Flash,但我确实想从应用程序中复制和粘贴文本,因此如果有人单击它,我想将文本设置为选中。用户只需键入Ctrl-C/Ctrl-V进行复制和粘贴(在Windows中)。这可能吗?我该怎么做?

    更多信息:

    我想使用的应用程序位于 http://borkent-app2.appspot.com/ 这是一个应用程序,我教自己希伯来语(我的母语是荷兰语)。希伯来语单词使用标签放置在根面板上。有时我想复制并粘贴希伯来语单词(例如,当我想在Google上搜索时),但选择它有些麻烦(可能是因为从右向左的文本方向)。所以我想选择希伯来语单词的文本,只需点击它所在的标签。

    1 回复  |  直到 14 年前
        1
  •  7
  •   z00bs    14 年前

    像这样的?

    public void onModuleLoad() {
        final Label word = new Label("some text");
        word.addClickHandler(new ClickHandler() {
    
            @Override
            public void onClick(ClickEvent event) {
                markText(word.getElement());
            }
        });
        word.getElement().setId("test");
        RootPanel.get().add(word);
    }
    
    private native void markText(Element elem) /*-{
        if ($doc.selection && $doc.selection.createRange) {
            var range = $doc.selection.createRange();
            range.moveToElementText(elem);
            range.select();
        } else if ($doc.createRange && $wnd.getSelection) {
            var range = $doc.createRange();
            range.selectNode(elem);
            var selection = $wnd.getSelection();
            selection.removeAllRanges();
            selection.addRange(range);
        }
    }-*/;