我使用Java applet作为上传文件的框。从文件系统中选择文件并在applet上拖动它们会导致将文件路径名添加到输入文本框中。
目前的设计如下:每个“上传”按钮都包含一个用于拖放的小程序,一个收音机盒和一个输入框。每个收音机盒都有自己的ID。使用java.awt.datatransfer packagee中的方法实现了拖放操作。当用户按照Java代码
删除所选applet上的文件时 getAppletContext().showDocument
(new URL("javascript:appletUpdateFile()"));
}
调用javascript函数。一切正常。但是存在以下问题 - 我为所有上传按钮使用一个小程序。它实际上是CMS的外部用户脚本(IEPro)的一部分,因此CMS的当前页面中可能存在非常多的“上传”按钮。因此,为每个按钮创建唯一的小程序是不可接受的解决方案。
必须以某种方式识别应该更新哪个输入框(属于某些“上传”按钮/拖放框)。目前它由无线电盒决定。因此,用户需要在applet上实际拖动文件之前选择特定选项。从用户的角度来看,这一步骤是多余的。
我想以某种方式确定哪些applet被拖动文件而不使用无线电盒。直到现在我已经尝试了几种方法:
1)在小程序的父元素上识别使用鼠标悬停,鼠标等 - 它可以选择并设置正确的小程序(设置单选框,变量等)。但它无法正常工作,因为如果光标保存文件,则会忽略所有鼠标事件......
2)使用“this”关键字作为appletUpdateFile()函数的参数 - 这显然也无效,浏览器当然无法确定'新URL(“javascript:appletUpdateFile()”
的调用者applet所以,我希望我输入的内容足以引入问题。我会感激任何方式(在applet方面,或在JavaScript方面)来完成这项任务。
答案 0 :(得分:0)
当您通过PHP,Javascript或其他东西生成applet的对象标记和输入框时,您可以为每个applet传递一个唯一值(如果它们是在循环中生成的,则候选将是$ i的当前值)你也用它来识别输入框(例如将“id”属性设置为“inputBox $ i”)。 applet将此值传递给appletUpdateFile函数,然后该函数可以通过document.getElementById(“inputBox”+ idNumber)访问相应的输入框。