【问题标题】:Javascript form.submit() doesn't work in SafariJavascript form.submit() 在 Safari 中不起作用
【发布时间】:2017-10-13 09:48:46
【问题描述】:

我有一个从 HTML 页面创建、附加和提交表单的简单函数,它适用于除 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

【问题讨论】:

  • 你在使用 iframe 吗?我记得 Safari 遇到了 iframe 问题。
  • 等待或不执行form.remove();是否有效
  • @ViRuSTRiNiTy 不,没有 iframe
  • @mplungjan 即使没有 form.remove();什么都没发生
  • 你仍然可以在没有 jQuery 的情况下使用 Ajax

标签: javascript html forms safari form-submit


【解决方案1】:

您已设置 target="_blank" 并在脚本加载期间触发该函数(即不是来自点击等用户事件)。

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

不要使用_blank 或等到单击某些内容后再调用您的函数。

【讨论】:

  • 好的,如果我不使用“_blank”它可以工作,但结果将加载到同一页面上,如果我需要保留当前页面并在新窗口/选项卡上打开结果怎么办?
  • 然后等待一个按钮被点击。弹出窗口在最好的时候是令人不快的,在页面加载时它们非常糟糕,并且浏览器会采取措施阻止作者创建它们。
  • 或使用 ajax 或以 iframe 为目标(除非 safari 也不赞成这样做)
猜你喜欢
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多