Events RichTextArea或IFrame中的GWT捕获事件
我有一个富裕的地区Events RichTextArea或IFrame中的GWT捕获事件,events,gwt,copy-paste,richtextarea,Events,Gwt,Copy Paste,Richtextarea,我有一个富裕的地区 private RichTextArea RichTextArea; 我正在尝试捕获一个粘贴事件,如下所示: DOM.sinkEvents((com.google.gwt.user.client.Element)richTextArea.getElement(),com.google.gwt.user.client.Event.ONPASTE); DOM.setEventListener((com.google.gwt.user.client.Element)richTex
private RichTextArea RichTextArea;
我正在尝试捕获一个粘贴事件,如下所示:
DOM.sinkEvents((com.google.gwt.user.client.Element)richTextArea.getElement(),com.google.gwt.user.client.Event.ONPASTE);
DOM.setEventListener((com.google.gwt.user.client.Element)richTextArea.getElement(),new EventListener(){
@重写公共void onBrowserEvent(事件){
开关(event.getTypeInt()){
case Event.ONPASTE:Window.alert(“嘿”);break;
}
}
});
但它不起作用,当我在richTextArea上粘贴文本时,不会触发警报
知道如何捕获此粘贴事件吗
谢谢 您看过
RichTextArea
的呈现HTML吗?它是iframe
而不是实际的textarea输入类型。它在主体
元素下设置用户输入。因此,这就是为什么您不会陷入粘贴事件。例如,如果您在TextArea
小部件上收听onpaste
,它可以正常工作
private static class MyTextArea extends TextArea
{
public MyTextArea()
{
sinkEvents(Event.ONPASTE);
}
@Override
public void onBrowserEvent(Event event)
{
if(event.getTypeInt() == Event.ONPASTE)
{
Window.alert("text pasted !");
}
super.onBrowserEvent(event);
}
}
也许您可以使用JSNI将一个处理程序绑定到该iframe body元素,并获取该事件的回调(不过还没有尝试过)您是否看到了RichTextArea
的呈现HTML?它是iframe
而不是实际的textarea输入类型。它在主体
元素下设置用户输入。因此,这就是为什么您不会陷入粘贴事件。例如,如果您在TextArea
小部件上收听onpaste
,它可以正常工作
private static class MyTextArea extends TextArea
{
public MyTextArea()
{
sinkEvents(Event.ONPASTE);
}
@Override
public void onBrowserEvent(Event event)
{
if(event.getTypeInt() == Event.ONPASTE)
{
Window.alert("text pasted !");
}
super.onBrowserEvent(event);
}
}
也许您可以使用JSNI将一个处理程序绑定到该iframe body元素,并获取该事件的回调(虽然还没有尝试过)您不能将该事件添加到RichTextArea
,它实际上是一个iframe
,而是添加到它的body
虽然您可以使用jsni
,但我会使用,因为它很简单:
//首先将小部件附加到DOM
RootPanel.get().add(richTextArea);
//我们只能将事件绑定到内容,一旦创建了iframe文档,
//这是在它被连接之后发生的。请注意,richtTextArea使用超时
//为了初始化,我们还必须延迟事件绑定
$(richTextArea).delay(1,lazy().contents().find(“body”).bind(Event.ONPASTE,new Function()){
@重写公共布尔值f(事件e){
Window.alert(“OnPaste”);
返回true;
}
}).done());
您不能将事件添加到RichTextArea
,它实际上是一个iframe
,但添加到它的主体中
虽然您可以使用jsni
,但我会使用,因为它很简单:
//首先将小部件附加到DOM
RootPanel.get().add(richTextArea);
//我们只能将事件绑定到内容,一旦创建了iframe文档,
//这是在它被连接之后发生的。请注意,richtTextArea使用超时
//为了初始化,我们还必须延迟事件绑定
$(richTextArea).delay(1,lazy().contents().find(“body”).bind(Event.ONPASTE,new Function()){
@重写公共布尔值f(事件e){
Window.alert(“OnPaste”);
返回true;
}
}).done());
为了完整起见,本机(JSNI)解决方案类似于:
setPastehandler(richTextArea.getElement());
私有本机void setPasteHandler(元素e)/*-{
e、 contentDocument.onpaste=函数(事件){
警告(“粘贴!”);
};
}-*/;
为了完整起见,本机(JSNI)解决方案类似于:
setPastehandler(richTextArea.getElement());
私有本机void setPasteHandler(元素e)/*-{
e、 contentDocument.onpaste=函数(事件){
警告(“粘贴!”);
};
}-*/;