我正在为Chrome创建HTML5 SVG编辑器。作为打包的应用程序,我使用以下代码实现了一个保存对话框:
function prepareExport(){
var svg = document.getElementById("canvas");
svgDoc = svg.children;
var exported = document.querySelector('#canvasWrap').innerHTML;
/*old stuff, does not work in packed apps. well for me anyway
var output = document.querySelector(".opt");
var outputTextarea = document.querySelector(".optText");
output.style.display = "block";
outputTextarea.style.display = "none";
var dlButton = document.querySelector(".dragout");
dlButton.setAttribute("href" ,"data:image/xml+svg;base64," + window.btoa(exported));
dlButton.setAttribute("data-downloadurl" ,dlButton.dataset['downloadurl'] + window.btoa(exported));
dlButton.addEventListener('dragstart', function(e) {
e.dataTransfer.setData('DownloadURL', this.dataset.downloadurl);
}, false);
*/
chrome.fileSystem.chooseEntry({type: 'saveFile'}, function(writableFileEntry, unused) {
writableFileEntry.createWriter(function(writer) {
writer.onerror = errorHandler;
writer.onwriteend = function(e) {
console.log('write complete');
};
writer.write(new Blob([exported], {type: 'image/svg+xml'}));
}, errorHandler);
});
}
我使用导出SVG按钮运行此功能,猜猜是什么?对话框没有出现。我不知道为什么,这是我的javascript控制台: http://prntscr.com/1uklw7
答案 0 :(得分:1)
这可能是一个权限错误。您是否已将清单的写文件系统权限添加到清单中?有关详细信息,请参阅http://developer.chrome.com/apps/fileSystem.html。
如果这不是问题,您可以在回调中从chrome.lastError获取更多详细信息。有关详细信息,请参阅http://developer.chrome.com/apps/runtime.html#property-lastError。
另外,您可能需要查看文件系统示例:https://github.com/GoogleChrome/chrome-app-samples/tree/master/filesystem-access。