我可以将文件从桌面拖到Firefox 3.5中的拖放区并启动上载吗?

我可以将文件从桌面拖到Firefox 3.5中的拖放区并启动上载吗?,firefox,file-upload,drag-and-drop,firefox-3,Firefox,File Upload,Drag And Drop,Firefox 3,我已经在我的拖放区域设置了ondrop事件,当我将图像从桌面拖到拖放区域时,它会收到一个事件 但是,根据推荐的拖动类型文档: 使用application/x-moz-file类型拖动本地文件,该文件的数据值为nsIFile对象。非特权网页无法检索或修改此类型的数据 这是有道理的,但是如何提示用户提升权限以访问文件数据并通过XMLHttpRequest发送它呢 如果我在执行此代码时没有升级权限就尝试此代码: event.dataTransfer.mozSetDataAt("application

我已经在我的拖放区域设置了ondrop事件,当我将图像从桌面拖到拖放区域时,它会收到一个事件

但是,根据推荐的拖动类型文档:

使用application/x-moz-file类型拖动本地文件,该文件的数据值为nsIFile对象。非特权网页无法检索或修改此类型的数据

这是有道理的,但是如何提示用户提升权限以访问文件数据并通过
XMLHttpRequest
发送它呢

如果我在执行此代码时没有升级权限就尝试此代码:

event.dataTransfer.mozSetDataAt("application/x-moz-file", file, 0);
Javascript返回以下错误:

Permission denied for domain.com to create wrapper for object of class UnnamedClass
我能找到的关于这方面的唯一一篇文章是2005年的,但我不知道这些说明是否仍然适用于Firefox3,它建议这样做:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

这似乎不起作用。

如果您还没有升级到3.5,您可以使用该扩展。

我发现,如果不是全局升级权限,而是:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); ... function doDrop(event) { ... var file = event.dataTransfer.mozGetDataAt("application/x-moz-file", 0); ... } netscape.security.privilegmanager.enablePrivilege('UniversalXPConnect'); ... 功能doDrop(事件){ ... var file=event.dataTransfer.mozzetdataat(“application/x-moz-file”,0); ... } 我升级职能机构中的权限:

... function doDrop(event) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); ... var file = event.dataTransfer.mozGetDataAt("application/x-moz-file", 0); ... } ... 功能doDrop(事件){ netscape.security.privilegmanager.enablePrivilege('UniversalXPConnect'); ... var file=event.dataTransfer.mozzetdataat(“application/x-moz-file”,0); ... }
我消除了您描述的错误,并获得了对我正在寻找的
nsIFile
实例的访问权。

谢谢,但我更多地从web开发人员的角度考虑这一点,我认为大多数人将升级到Firefox v3.5,但安装此扩展的人要少得多。您找到答案了吗??我希望能够至少捕获本地url。有什么想法吗?现在有可能了!见我的答案:Firefox33说“netscape.security.privilegmanager未定义”。看起来它是在FF15中删除的: