自动生成Form表单提交在苹果浏览器中的注意事项

以下是本人在公司旧系统中看到的该段代码

function Post(URL, PARAMTERS) {
    //创建form表单
    var temp_form = document.createElement("form");
    temp_form.action = URL;
    //如需打开新窗口,form的target属性要设置为'_blank'
    temp_form.target = "_blank";
    temp_form.method = "post";
    temp_form.style.display = "none";
    //添加参数
    for (var item in PARAMTERS) {
        var opt = document.createElement("textarea");
        opt.name = PARAMTERS[item].name;
        opt.value = PARAMTERS[item].value;
        temp_form.appendChild(opt);
    }
    document.body.appendChild(temp_form);
    //提交数据
    $(temp_form).attr('action', URL + "?" + $(temp_form).serialize()); //解决iPhone无法post表单的问题 【对此,博主见解:该办法其实不是个好办法,不能超过Url地址长度的限制,另外敏感数据也有暴露隐忧,不建议采用】
    temp_form.submit();
}

代码中针对苹果Safari浏览器弹窗Submit表单后后台无法获取表单数据的问题,以通过Url暴露表单内容的方法解决,这不是个好的方案。

参考 https://pweb123.com/html/php/784.html 

该问题实际是Safari浏览器针对自动弹窗提交数据的安全机制造成的,如果 form.target改用“_self” 或者 在HTML页面表单以type="submit"按钮人为手动单击提交,应该不存在该问题;然而我们是希望不改变原页面的情况下自动生成表单提交,因此不可在本页中用“_self”。

如果单纯想提交数据非必须弹新窗口,可以结合利用 iframe ,创建一个隐藏的iframe在其中以target为_self提交Form,即可解决问题,或者就只是使用Ajax也可以提交FormData,如果需求新弹窗打开另一页面是必须的,那么还要同时考虑满足打开新窗口的需求(像本旧系统中的代码用Url中尽管有暴露表单内容的缺陷,但这里是可以满足弹新窗口的)。

参考 https://stackoverflow.com/questions/46727106/javascript-form-submit-doesnt-work-in-safari 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/138427.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟我一起从零开始学python(二)网络编程

前言 昨天讲解了关于从零入门python的第一遍,编程语法必修内容,比如python3基础入门,列表与元组,字符串,字典,条件丶循环和其他语句丶函数丶面向对象丶异常和文件处理 。 今天讲第二篇:python…

修改/etc/fstab文件导致Linux无法正常启动解决方法

如果把 /etc/fstab 文件修改错了,也重启了,系统崩溃启动不了了,那该怎么办?比如: [rootlocalhost ~]# vi /etc/fstab UUIDc2ca6f57-b15c-43ea-bca0-f239083d8bd2 ext4 defaults 1 1 UUID0b23d315-33a7-48a4-bd37-9248…

ceph-deploy bclinux aarch64 ceph 14.2.10【2】vdbench rbd 块设备rbd 测试失败

上篇 ceph-deploy bclinux aarch64 ceph 14.2.10-CSDN博客 安装vdbench 下载vdbench 下载页面 Vdbench Downloads (oracle.com) 包下载 需要账号登录,在弹出层点击同意才能继续下载 用户手册 https://download.oracle.com/otn/utilities_drivers/vdbench/vdb…

搜集的升压芯片资料

DC-DC升压芯片,输入电压0.65v/1.5v/1.8v/2v/2.5v/2.7v/3v/3.3v/3.6v/5v/12v/24v航誉微 HUB628是一款超小封装高效率、直流升压稳压电路。输入电压范围可由低2V伏特到24伏特,升压可达28V可调,且内部集成极低RDS内阻100豪欧金属氧化物半导体场效应晶体管的…

人物百科怎么创建?教你如何创建人物百度百科注意以下方式技巧!

百科就像互联网上的名片,不仅代表身份,而且拥有极高的可信度。因此,许多名人都希望利用百科提高自己的知名度。任何人都可以编辑人物百科词条,但为了成功上传,需要一些技巧。以下是小媒同学给大家带来的人物百科快速创…

成都瀚网科技有限公司抖音带货正规

随着互联网的蓬勃发展,越来越多的公司开始利用网络平台进行产品销售。其中,抖音作为一款广受欢迎的短视频平台,已经成为众多商家眼中的“香饽饽”。在这场电商狂欢中,成都瀚网科技有限公司(以下简称“瀚网科技”&#…

AMEYA360:江苏润石再次重磅发布11颗通过AEC-Q100认证的车规级芯片

为进一步满足众多新能源汽车客户对车规级芯片的需求,江苏润石持续研发更多的车规级产品,再次重磅发布11颗通过AEC-Q100 Grade1 & MSL 1湿敏等级认证的车规级芯片;进一步展示了江苏润石在车规级芯片领域孜孜不倦的追求,以及深耕汽车电子市…

研究生做实验找不到数据集咋办?

做实验找不到数据集咋办?这是很多研究者和开发者都会遇到的问题。数据集是实验的基础,没有合适的数据集,就无法验证模型的性能和效果。那么,有没有什么方法可以快速地找到我们需要的数据集呢?本文将介绍4个常用的数据集搜索平台,希望能够帮助大家解决这个难题。下面以室内…

单极性非归零码(NRZ)、双极性非归零码(NRZ)、单极性归零码、双极性非归零码(NRZ)、差分码的编码规则与其功率谱

数字信号的基带传输的基本概念与传输码型 主要涉及一些数字基带传输的基本概念和数字基带传输的简单码型。码型包括:单极性非归零码(NRZ)、双极性非归零码(NRZ)、单极性归零码、双极性非归零码(NRZ&#xf…

【第2章 Node.js基础】2.4 Node.js 全局对象(一)

什么是Node.js 全局对象 对于浏览器引擎来说,JavaScript 脚本中的 window 是全局对象,而Node.js程序中的全局对象是 global,所有全局变量(除global本身外)都是global 对象的属性。全局变量和全局对象是所有模块都可以调用的。Node.is 的全局…

零代码Prompt应用大赛正式开始!飞桨星河社区五周年活动第一站

五周年盛典将至!抢发第一站! 在大模型时代,飞桨星河社区致力于让人人都成为大模型开发者!飞桨星河社区零代码应用开发工具链,帮助大家轻松实现灵感落地、场景化需求落地,助力每个人实现工作与生活的效能提…

Node-RED系列教程-29nodered与三菱PLC基于MC协议通信测试

安装mc通信节点: node-red-contrib-mcprotocol 包含2个节点,一个节点负责读,一个节点负责写。 本教程目前只演示读功能。由于没有硬件,首先利用hsl demo软件模拟出一个用于测试mc通信的服务端。 mc读过程如下: 输入节点开启定时即可。 MC读节点配置:

HarmonyOS开发(一):开发工具起步

1、DevEco Studio 工具下载地址:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 DevEco Studio基础配置 Node.jsOhpm 这两个都可以在进入IDE时在工具上选择下载安装 2、HelloWorld工程 打开DevEco,那么会进入欢迎页,点击Create Project---…

Swift--字符、字符串与集合类型

系列文章目录 第一章:量值与基本数据类型 第二章:字符、字符串与集合类型 文章目录 系列文章目录字符串组合 三种集合数组集合字典类型 Swift是一种弱化指针的语言,它提供了String类型和Character类型来描述字符串与字符 //构造一个字符串 …

李开复:未来AI或助力中国成为科技“火车头”

原创 | 文 BFT机器人 6月22日,创新工场的董事长兼首席执行官李开复,受邀在一场峰会上发表演讲,主题为《AI的飞奔时代》。 中国真的能成为AI超级强国吗? 李开复在演讲上盘点过去,展望未来,分析了过去几年中…

Hologres常用语句

1、列转行 regexp_split_to_table(要分割的字段,分割关键字) select regexp_split_to_table(aa,bb, ,) 2、行转列 string_agg(要拼接的字段,拼接关键字) 进阶版--按字段名汇总转换 select A字段,string_agg(B字段,, order by 排序字段) from 表名 group by A字段

C语言基础篇4:变量与存储

1 局部变量和全局变量 在介绍局部变量和全局变量前,先了解一些关于作用域方面的内容。作用域的作用就是决定程序中的哪些语句是可用的,换句话说,就是程序中的可见性。作用域有局部作用域和全局作用域,那么局部变量就具有局部作用域…

火山引擎 DataLeap 计算治理自动化解决方案实践和思考

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 【导读】本文旨在探讨火山引擎 DataLeap 在处理计算治理过程中所面临的问题及其解决方案,并展示这些解决方案带来的实际收益。主要内容包括:…

专业开源人员的需求仍在增长

Linux 基金会执行总监根据 Dice.com 的一项调查结果表示:「开源正变得越来越专业化,各大公司都在寻求具备这方面技能的专业型人才。」网上有研究分析了两组「2017 年度开源工作调查与报告」,主要分析结果如下: 89% 的招聘人员表示…

代码人生里哪些书触动灵魂?技术大咖精选8本好书为你揭秘!

导语 | 在这个快节奏、信息繁杂的时代,我们总在寻找那些能够触动内心、启迪思维的知识瑰宝。书籍,无疑是我们忠诚的伙伴和引路人。10 月 18 日,腾讯云 TVP 举办了第八期 TVP 读书分享会,汇集 4 位技术大咖,为你倾情推荐…