我在放置区域设置了一个ondrop事件,当我将图像从桌面拖到放置区域时,它会收到一个事件。
但是,根据Recommended_Drag_Types文档:
https://developer.mozilla.org/en/DragDrop/Recommended_Drag_Types
使用带有nsIFile对象的数据值的application / x-moz-file类型拖动本地文件。非特权网页无法检索或修改此类型的数据。
这是有道理的,但是如何提示用户升级权限以访问文件数据并通过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年的文章,但我不知道这些指示是否仍然适用于Firefox 3,它建议这样做:
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
似乎不起作用。
答案 0 :(得分:0)
如果您尚未升级到3.5,则可以使用dragdropupload扩展名。
答案 1 :(得分:0)
我发现如果不是全局升级权限,那么:
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); ... function doDrop(event) { ... var file = event.dataTransfer.mozGetDataAt("application/x-moz-file", 0); ... }
我升级了函数体内的权限:
... function doDrop(event) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); ... var file = event.dataTransfer.mozGetDataAt("application/x-moz-file", 0); ... }
我摆脱了您描述的错误,并获得了我正在寻找的nsIFile
实例的访问权限。