javascript - 无法在 iPad 上使用 JS 创建的表单打开第二个新选项卡

标签 javascript html forms window mobile-safari

因此,我通过单击按钮以编程方式在 Javascript 中创建一个表单。这部分工作正常。

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

我有一些代码:

    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);

同样,第一次一切正常,第二次表单也正确创建。它只是不提交。 (或者也许是这样,但第二次它不会打开新窗口

此外,我尝试删除 setTimeout (我们在代码中需要),并且仍然出现相同的问题。

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

    form.id = 'form-' + new Date().getTime();

ID 添加得很好,但是并不能解决问题。

如何让它工作两次?

编辑:

刚刚通过更改 form.name 进行了快速测试。两者都具有硬编码或动态名称,并且窗口关闭或仍然打开,都不会第二次提交

编辑2:

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

最佳答案

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

关于javascript - 无法在 iPad 上使用 JS 创建的表单打开第二个新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810536/

相关文章:

html - word-wrap break-word 在此示例中不起作用

jQuery 从 <div> 中删除 <form>

适用于 WAMP 本地主机但不适用于 WebServer 的 PHP 代码

jquery - 无法获得 jquery 表单验证来注册 $.post 元素

javascript - Highcharts : Set Each Bar In a Multi-Series Bar Graphs To a Different Color

javascript - jQuery 的窗口加载包装器

javascript - 选择值后隐藏选择(并且页面重新加载)

javascript - 访问输入标签的 ID 属性时得到一个奇怪的数字

html - 如何在另一个div的右上角创建三 Angular 形以看起来被边框分开

javascript - 将增量值分配给 knockout 中动态生成的复选框