我发现cordova-plugin-file会覆盖File
对象,以便它可以在幕后做一些奇特的事情。这在Cordova中通常很好,但我也发现FileStack(我的项目的另一个依赖项)确实需要该本地File
对象。我也碰巧使用Meteor 1.6从相同的代码库构建我的Cordova / Web应用程序。
在我的用例中,我需要暂时将File
对象恢复为原生,而Filestack运行其.pick()
方法。
我目前的解决方案是创建一个新的iFrame,将File
重新分配给原始版本,删除iFrame,运行Filestack的.pick()
方法,然后恢复cordova-plugin-file的{{1}对象恢复正常操作。
File
这似乎工作得很好,但我觉得这不是最好的解决方案。首先,添加一个全新的浏览器框架对于访问已经属于范围的对象感觉非常糟糕。
有没有办法在不创建iFrame的情况下获取原生function setOrigFileObject()
{
let iframe = document.createElement('iframe');
iframe.src = 'javascript:;';
iframe.style.display = 'none';
document.body.appendChild(iframe);
window.FILE_CORDOVAPLUGINFILE = File;
window.FILE_NATIVE = iframe.contentWindow.File;
File = window.FILE_NATIVE;
document.body.removeChild(iframe);
}
对象?