0

我正在为 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

4

1 回答 1

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 。

于 2013-10-01T22:46:57.457 回答