Javascript Can';t在iPad上使用JS创建的表单打开第二个新选项卡

Javascript Can';t在iPad上使用JS创建的表单打开第二个新选项卡,javascript,html,forms,window,mobile-safari,Javascript,Html,Forms,Window,Mobile Safari,所以我通过编程在Javascript中点击一个按钮创建一个表单。这部分很好用 当我检测到用户正在使用iPad时,我想将表单提交到Safari中的新窗口/选项卡。这同样有效,但只有一次。第二次尝试时,由于某种原因,它没有提交。Safari调试器没有给我任何错误,创建得非常好,但它只是没有打开新窗口 我有一些代码: var form = document.createElement("form"); var hiddenField = document.createElement(

所以我通过编程在Javascript中点击一个按钮创建一个表单。这部分很好用

当我检测到用户正在使用iPad时,我想将表单提交到Safari中的新窗口/选项卡。这同样有效,但只有一次。第二次尝试时,由于某种原因,它没有提交。Safari调试器没有给我任何错误,
创建得非常好,但它只是没有打开新窗口

我有一些代码:

    var form = document.createElement("form");

    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");
    hiddenField.setAttribute("name", "product_id");
    hiddenField.setAttribute("value", code);

    form.appendChild(hiddenField);

    // if user uses iPad (logic done in PHP)

    form.setAttribute('target', '_blank');

    form.setAttribute("action",'http://my-url.com');

    document.body.appendChild(form);

    setTimeout(function(){

        form.submit();
        document.body.removeChild(form);

    },250);
同样,第一次和第二次正确创建表单时,一切都很好。它就是不屈服。(或者可能是这样,但第二次它不会打开一个新窗口

此外,我尝试删除
设置超时
(我们在代码中需要它),但同样的问题仍然出现

我还尝试在每个表单中添加不同的ID

    form.id = 'form-' + new Date().getTime();
ID添加得很好,但是,它不能解决问题

我怎么能让它工作两次呢

编辑:

刚做了一个快速测试,更改了
表单.name
。无论是使用硬编码名称还是动态名称,还是在窗口关闭或仍然打开的情况下,它都不会第二次提交

编辑2:


我正在使用iOS模拟器在Retina iPad上使用iOS7

您正在以编程方式为同一url打开第二个选项卡或窗口。这将被视为弹出窗口,因此会被浏览器阻止。您每次都可以使用不同的url吗?

尝试为目标指定一个名称,而不是“空白”,因为您可能希望回收该url每次打开新选项卡而不是打开新选项卡。@Diodeus只是尝试了一下,但是,同样的问题。由于窗口已经关闭,重新使用选项卡并不是什么大问题。这是用户启动的提交吗?浏览器通常会阻止新窗口执行脚本启动的操作。是的,这是用户启动的。