Javascript Salesforce,Locker:不能";createObjectURL";使用不安全的[对象文件]
我对离开公司的其他开发人员所做的lightning组件有一些问题,用户告诉我该工具在一个月前工作正常,但我不知道当时发生了什么 错误是: 此页有一个错误。您可能只需要刷新它。行动 失败:c:EMB_CCW_面板$controller$onPickFile[储物柜:无法 “createObjectURL”使用不安全的[object File]!]失败描述符: {c:EMB_CCW_面板$controller$onPickFile} javascript方法就是这个Javascript Salesforce,Locker:不能";createObjectURL";使用不安全的[对象文件],javascript,salesforce,salesforce-lightning,Javascript,Salesforce,Salesforce Lightning,我对离开公司的其他开发人员所做的lightning组件有一些问题,用户告诉我该工具在一个月前工作正常,但我不知道当时发生了什么 错误是: 此页有一个错误。您可能只需要刷新它。行动 失败:c:EMB_CCW_面板$controller$onPickFile[储物柜:无法 “createObjectURL”使用不安全的[object File]!]失败描述符: {c:EMB_CCW_面板$controller$onPickFile} javascript方法就是这个 onPickFile : fun
onPickFile : function(component, event, helper) {
var catalog = component.get("v.catalogWrapper");
var brandsList = component.get("v.brandsList");
console.log("onPickFile", catalog);
var file = event.target.files[0];
var fileURL = URL.createObjectURL(file);
var req = new XMLHttpRequest();
req.open('GET', fileURL);
req.onload = function() {
URL.revokeObjectURL(fileURL);
component.set("v.catalogWrapper",
helper.fillCatalogWithXMLData(catalog, helper.extractSlideNotesFromODTContentXML(this.responseXML), brandsList));
};
req.onerror = function() {
URL.revokeObjectURL(fileURL);
console.log('Error loading XML file.');
};
req.send();
},
以及辅助方法
extractSlideNodeFromODTContentXML:function(xmlDoc){
var输出=[];
var slides=xmlDoc.getElementsByTagName(“绘图:页面”);
对于(var s=0;s来说,如果它在一个月前就可以使用,那么它可能是Salesforce在夏季发行版中修补的。不知道代码中有什么(如果有的话)是不安全的,但听起来像是被Lightning Locker服务击中了。在不同的浏览器中会得到相同的结果吗
如果您将组件的API版本敲回,看看它是否有效。这是一个黑客攻击,但在您确定该做什么时,可能是暂时的缓解
这表明文件是受支持的:
也许你需要以不同的方式读取文件的内容,也许你需要放弃用JavaScript解析它,转而使用服务器端的apex?我不知道你的功能是什么
如果您进入安装->lightning components->调试模式并自行启用,可能会有所帮助。您将在浏览器的开发人员工具中看到生成的更人性化的代码,调试可能会更简单。经验教训是要更加注意发布预览窗口(从9月12日开始,我们可以预览Winter'21的发布,SF应该在1-2周内发布相关博客)
这看起来很有希望:
也许你的代码需要合适的Aura访问器,event.getSource().get(“v.files”)[0]
而不是event.target.files[0]
。你真的需要调试它,并在浏览器的控制台中进行实验,看看有什么坚持住了。如果它在一个月前起作用,它可能是Salesforce在夏季发布时修补的。不知道什么(如果有的话)在你的代码中是不安全的,但听起来像是被闪电锁服务击中了。你在不同的浏览器中得到相同的结果吗
如果您将组件的API版本敲回,看看它是否有效。这是一个黑客攻击,但在您确定该做什么时,可能是暂时的缓解
这表明文件是受支持的:
也许你需要以不同的方式读取文件的内容,也许你需要放弃用JavaScript解析它,转而使用服务器端的apex?我不知道你的功能是什么
如果您进入安装->lightning components->调试模式并自行启用,可能会有所帮助。您将在浏览器的开发人员工具中看到生成的更人性化的代码,调试可能会更简单。经验教训是要更加注意发布预览窗口(从9月12日开始,我们可以预览Winter'21的发布,SF应该在1-2周内发布相关博客)
这看起来很有希望:
也许您的代码需要合适的Aura访问器,event.getSource().get(“v.files”)[0]
而不是event.target.files[0]
。您确实需要调试它并在浏览器控制台中进行实验,看看有什么坚持住了