2010-10-21 2 views
1

В GWT, видимо, вам нужно использовать Flash-компонент для изменения буфера обмена. Поскольку я не хочу использовать Flash, но я хочу скопировать и вставить текст из своего приложения, я бы хотел, чтобы текст был выбран, если кто-то на него нажимает. Единственное, что пользователь должен сделать, это набрать Ctrl-C/Ctrl-V для копирования и вставки (в Windows). Это возможно? Как мне это сделать?Установите выделенный текст в GWT (чтобы облегчить скопирование)

Подробнее:

приложение, в котором я хотел бы использовать это в http://borkent-app2.appspot.com/. Это приложение, которое я сделал, чтобы научить себя ивритским словам (мой родной язык - голландский). Еврейское слово помещается на RootPanel с помощью метки. Иногда я хотел бы скопировать и вставить еврейское слово (например, когда я хочу искать его в Google, например), но выбор его несколько громоздкий (вероятно, из-за направления текста справа налево). Поэтому я хотел бы выбрать текст еврейского слова, просто щелкнув по метке, в которой он находится.

+0

Что именно вы пытаетесь достичь? Текст, который пользователь должен щелкнуть в текстовой области, div или ...? Будет оценена дополнительная информация. – z00bs

+0

Добавлена ​​дополнительная информация. –

ответ

6

Что-то вроде этого?

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); 
    } 
}-*/; 
+0

Tnx, это работает для меня. –

+0

Это швы, которые не работают на хром ... – superscral

+0

Как установить смещение начала/конца? : / – displayname