Safari blob下载影响表单提交 - 结果表单发布后下载而不是在新标签中打开

Ris*_*hia 6 javascript forms safari blob download

下载文件选项(使用blob)与单个页面上的另一个表单提交选项一起出现.在表单提交之前选择下载选项时,将下载表单结果而不是在新选项卡中打开.

这只发生在Safari中.其余的浏览器按预期工作.

  • Safari版本11.0.1
  • macOS Sierra版本10.12.6

示例jsfiddle - https://jsfiddle.net/e8n9982f/

var $button1 = $("#btn-1");
var $button2 = $("#btn-2");

// Save Locally
$button1.on('click', function() {
  if (typeof(Blob) !== "undefined" && !!new Blob()) {
    var codeToSave = '<!doctype html>' +
      '<html lang="en">' +
      '<head>' +
      '</head>' +
      '<body>' +
      '<h1>Hello, world!</h1>' +
      '</body>' +
      '</html>';

    var codeBlob = new Blob([codeToSave], {
      type: "text/html"
    });
    var codeSaveAsURL = window.URL.createObjectURL(codeBlob);
    var fileNameToSaveAs = "temp-file.html";

    if (window.navigator && window.navigator.msSaveOrOpenBlob) { // For IE, Edge
      window.navigator.msSaveOrOpenBlob(codeBlob, fileNameToSaveAs);
    } else {
      var downloadLink = document.createElement("a");
      downloadLink.download = fileNameToSaveAs;
      downloadLink.href = codeSaveAsURL;
      downloadLink.style.display = "none";
      document.body.appendChild(downloadLink);
      downloadLink.click();
      document.body.removeChild(downloadLink);
    }

    window.URL.revokeObjectURL(codeBlob);
    codeSaveAsURL = null;
    codeBlob = null;
  }

  return false;
});

// Open in JSFiddle
$button2.on('click', function() {
  var form = document.createElement("form");
  form.id = "submitToFiddle";
  form.style.display = "none";
  form.method = "post";
  form.action = "https://jsfiddle.net/api/post/library/pure/";
  form.target = "check";
  //        form.target = "_blank";

  var input = document.createElement("textarea");
  input.name = "html";
  input.innerHTML = '<h1>Fiddle!</h1>';
  document.body.appendChild(form);
  form.appendChild(input);;

  input = document.createElement("input");
  input.type = "submit";
  form.appendChild(input);
  form.submit();
  document.body.removeChild(form);
  return false;
});
Run Code Online (Sandbox Code Playgroud)

要在Safari中重现该问题,首先单击"本地保存"按钮,然后单击"在JSFiddle中打开"按钮.

如果首先单击"在JSFiddle中打开"按钮,然后单击"本地保存"按钮,它将按预期工作.

我无法找到任何关于Safari为何如此表现的参考.

Car*_*ire 0

我遇到了同样的问题,在 Safari 中单击下载链接会导致所有 target=_blank 链接在单击时下载,有解决方法吗?

除非我将目标设置为 _self,否则没有解决方法,这很糟糕。但我最近更新到 Safari 11.1.1,问题似乎得到了解决