Javascript form.submit()在Safari中不起作用

问题描述:

我有一个简单的函数,它可以从HTML页面创建,追加和提交表单,它可以在除Safari之外的所有浏览器中工作。我想不通为什么,任何暗示将是非常值得欢迎的Javascript form.submit()在Safari中不起作用

这里是我的功能:

function open(method, url, data, target) { 
     var form = document.createElement("form"); 
     form.action = url; 
     form.method = method; 
     form.target = target; 
     if (data) { 
      for (var i = 0; i < data.length; i++) { 
       let input = document.createElement("textarea"); 
       input.name = i.toString(); 
       input.innerText = data[i]; 
       form.appendChild(input); 
      } 
     } 
     form.style.display = "none"; 
     document.body.appendChild(form); 
     form.submit(); 
     form.remove(); 
    } 

    // use example 
    var data = ["text1", "text2", "text3", "text4", "text5", "text6"]; 
    open("POST", "../result.php" , data, "_blank"); 

PS:如果可能的话我会避免使用JQuery

+1

你在使用iframe吗?我记得Safari浏览器有iframe问题。 – ViRuSTriNiTy

+0

它是否工作,如果你等待或不做'form.remove();' – mplungjan

+0

@ViRuSTriNiTy nope,没有iframe – Plastic

您已设置target="_blank"并触发脚本加载期间的功能(即不是像点击那样的用户事件)。

由于您试图在页面加载时打开自动弹出窗口,Safari正在阻止您。

不要使用_blank或者在调用函数之前等待点击某物。

+0

好吧,如果我不使用“_blank”它的作品,但结果将加载在同一页面上,如果我需要保持当前页面并打开结果在新窗口/选项卡? – Plastic

+0

然后等待按钮被点击。弹出窗口在最佳时间是不愉快的,在页面加载时它们很糟糕,浏览器采取措施防止作者创建它们。 – Quentin

+0

或者使用ajax或目标iframe(除非safari还赞同这一点) – mplungjan