首先,我的开发环境是带有Eclipse Luna和OSX Yosemite上的Super Dev Mode的Chrome / Safari。

我在这个小部件上花了一些时间。我创建了许多上传小部件(图像,音频,视频等),这些扩展了基本的上传小部件。图像上传在初始化时调用FileUpload.click(),这将在文件对话框中按预期方式工作。但是,对于音频和视频上传,我需要用户从“ SuggestBox”中选择一个选项,然后进行选择后,应触发FileUpload.click()(我已经安装了事件处理程序,等等)。最后一点不起作用,或者似乎不起作用,因为我没有显示文件对话框。我已经跟踪了SuperDevMode中的代码执行,并且FileUpload.click()的确似乎被触发了(执行移动到了这一点,并且未引发任何错误/异常),但是对于我的生命,我一直无法显示该对话框。 FileUpload元素不是隐藏/禁用的(它以前是“屏幕外”的,但是我更改了它只是为了确保这不是问题)。

可能是什么原因造成的-这可能是操作系统/浏览器问题,而不是GWT问题吗?

更新

我决定将ClickHandler添加到FileUpload小部件,该小部件在触发时仅写入控制台。通过这两种机制,上传小部件都被“单击”,因此我真的迷失了下一步。有趣的是,如果我从音频上传中删除了SubmitBox并仅调用click函数,则确实会弹出,但我不明白为什么这会干扰单击(如果存在)。



解决了

解决了。因此,似乎只有当触发事件的事件是ClickEvent时,才尝试以编程方式触发FileUpload单击。为了解决这个问题,我不得不创建自己的本机click事件,并在用户从“ SuggestBox”中进行选择时触发该事件。这是预期的行为吗?

最佳答案

您可以触发诸如this之类的FileUpload的点击:

FileUpload f = new FileUpload();
f.getElement().<InputElement>cast().click();


为了使其能够在基于WebKit的浏览器(Chrome,Safari)中运行,必须将FileUpload“移出视图”而不是隐藏(如setVisible(false),它将CSS显示属性设置为none),例如(在CSS中):position:absolute;顶部:-1000px;左:-1000px;

关于java - GWT以编程方式单击FileUpload,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28019778/

10-12 05:49