javascript - 动态 iframe 中的表单提交不会被触发

标签 javascript

更新

问题不在于 iframe,问题在于发布 json 的 onsubmit 函数未提交表单。目标是动态创建一个 iframe,使用上面脚本标记的 json 内容使用表单发布重定向到另一个 URL。

原创

我在示例网站上有以下内容:

<script data-dashboard="true" type="application/json">
    {
    "title":"Serverless Identity"
    }
</script>
<script type="text/javascript">
    let dashboardConfiguration = document.querySelector("script[data-dashboard=\"true\"]");
    if (dashboardConfiguration) {
        let iframe = document.createElement("iframe");
        let model = JSON.stringify(JSON.parse(dashboardConfiguration.innerHTML.trim()));
    
        document.body.appendChild(iframe);

        var doc = iframe.contentWindow.document;
        doc.open()
        doc.writeln(`<form id="form" action="https://localhost:44338/dashboard/" method="POST" target="_self"></form>`)
        doc.close();


        iframe.onload = () => {
           

            let form = doc.getElementById("form");
             
            form.addEventListener("submit", (e) => {
                console.log(model);
                e.preventDefault();
                // construct an HTTP request
                var xhr = new XMLHttpRequest();
                xhr.open(form.method, form.action, true);
                xhr.setRequestHeader('content-type', 'application/json; charset=UTF-8');
                 
                // send the collected data as JSON
                xhr.send(model);

                xhr.onloadend = function () {
                    // done
                };
            });
            form.submit();


        }
    };

</script>

我还尝试使用 onsubmit 进行正常提交,结果相同。 enter image description here

最佳答案

这不可能,

根据规范,当使用 form.submit() 时,任何 onsubmit 处理程序都不会触发。

我使用了一种不同的方法 og 发送一个普通的表单提交,使用表单编码值和一个隐藏字段中的空洞有效负载,并在服务器端反序列化它。

关于javascript - 动态 iframe 中的表单提交不会被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55529598/

相关文章:

javascript - 改变函数的作用域

javascript - jQuery,选择嵌套元素

javascript - 如何结束页面重定向的口头句子,javascript

javascript - 如何在不使用 Web Audio API 的情况下直接从 ArrayBuffer 获取 channel 数据?

javascript - Date.js parseExact 与法国文化

java - 如何使用 Java 在 WebDriver 中的隐藏文本框中键入文本

javascript - 在 cujojs rest.js 上中止 Xhr

javascript - javascript求幂中的数学函数

javascript - 如何在单个jsp页面中调用多个servlet表单 Action

javascript - 如何引用日历表单中的输入日历弹窗?