`
laowang1984
  • 浏览: 17201 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

js控制表单提交,新窗口打开

 
阅读更多

今天做网银支付的时候,需要做到点击支付的时候提交订单,然后新窗口打开支付界面。



思路1:window.open(''),这个直接被pass了,因为银行的服务一般都是需要post数据的。就算是可以用get传递参数,window.open会被大部分浏览器拦截弹窗;



思路2:ajax成功之后,回调funciton中操作页面的一个带有'_blank'属性的表单,这个是网上大部分朋友提供的思路,但是已然不行,存在了跨域操作的'_blank'表单被脚本提交的时候,已然被拦截;



思路3:ajax成功之后, 回调funciton中操作页面的一个带有'_blank'属性的表单,表单的action指向同域名的一个url,在这个url里面重新生成一个新的不带'_blank'的表单,表单action指向需要提交的最终目的地url,表单里面用js操作一个在当前页面提交,本来以为这样可以欺骗到浏览器然浏览器认为这个'_blank'表单是指向同域名而不被拦截,但是相当遗憾的是,这个办法也失败了,带有'_blank'属性的表单,就算只指向同域名的url,也会被大部分浏览器拦截。


到这个时候,我已经有些无奈,准备和客户pk只能让用户添加信任网站,或者不在新窗口打开支付界面。



思路4:完全是灵光一现,误打误撞。ajax设置同步操作,在ajax执行完成之后,再用js执行带有'_blank'属性的表单提交,非常意外的是,居然在所有的浏览器都实现了新窗口打开而不被拦截


代码如下:


 

 
    	        var result;
 
  $.ajax({
             async: false, //就是设置这个最为关键的ajax同步
             type: 'POST',
             url: ctx + "/sales/submitBank",
             data: orderPost,
             success: function(datas){
                 result = datas;
             }
         });
  //同步ajax执行完成
  //以下是动态生成表单提交
       var str = [];
       str.push('<form action="postcash" id="gobank"  method="get">');
       str.push('<input  name="acceptId" value="' + datas.acceptId + '" id="postbankacceptId"/>');
       str.push('<input  name="time" value="' + datas.time + '"/>');
       str.push('<input  name="key" value="' + datas.key + '"/>');
       str.push('<input  name="merchantId" value="' + datas.merchantId + '" id="postbankmerchantId"/>');
       str.push('</form>');
       $("body").append(str.join(''));
       $("#gobank").attr('target', '_blank');
       $("#gobank").submit();
 

 

具体为什么会有这样的结果,我还没有研究的出来,也许是执行ajax同步锁定浏览器的时候,让浏览器SB掉了,不过总归说来,这样是可以欺骗浏览器来达到js新窗口打开页面的效果的

 

如果不需要执行ajax,也可以先执行一个完全没有作用的ajax来实现这个目的

 

 

 

ps:也许做弹窗广告的兄弟看到这个,会爽歪歪,不过请考虑下一般用户的耐受性…………

 

 

 

 

 

分享到:
评论

相关推荐

    from表单新窗口打开并提交

    总结一下,"from表单新窗口打开并提交"涉及的关键知识点包括:HTML表单的`&lt;form&gt;`元素,`target`属性设置新窗口提交,以及JavaScript对表单事件的处理和新窗口的控制。了解这些知识点可以帮助开发者构建更加灵活和...

    JS打开新窗口防止被浏览器阻止的方法

    本文实例讲述了JS打开新窗口防止被浏览器阻止的方法。分享给大家供大家参考。具体分析如下: 用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法...

    javascript提交父窗口

    通过以上分析,我们可以看到,在实际的 Web 应用开发中,利用 JavaScript 控制父窗口中的表单提交是一个非常实用的功能。它可以帮助我们构建更加灵活、高效的应用程序。同时,我们也需要注意相关的安全性和用户体验...

    用form提交打开新页面,类似于支付时候的效果

    5. **新页面打开**:如果希望在表单提交后打开新页面,可以使用`target`属性设置为`_blank`,这会在新标签页或窗口中加载目标URL。例如,`&lt;form action="payment.php" target="_blank"&gt;`。 6. **支付流程**:在支付...

    javascript打开静态子窗口

    这样的子窗口往往用于展示固定的信息或者进行特定的操作,例如弹出一个登录框或表单提交确认对话框等。 #### 2. 使用 `window.open()` 方法 在JavaScript中,可以通过`window.open()`方法来打开一个新的浏览器窗口...

    javascript经典特效---新窗口中显示提交内容.rar

    在JavaScript编程领域,"新窗口中显示提交内容"是一个常见的需求,特别是在网页交互和表单处理上。这个压缩包文件包含了一个名为"新窗口中显示提交内容.htm"的HTML文件,很可能是一个示例代码,用于演示如何利用...

    新窗口显示提交内容的源码

    - `action="javascript:show_choose()"`:当表单提交时,执行`show_choose()`函数而不是发送数据到服务器。 - `method="post"`:虽然这里设置了提交方法为`POST`,但在这种情况下实际上不会发生HTTP请求。 #### ...

    js 提交和设置表单的值

    13. 窗口参数设置:可以使用 JavaScript 来设置窗口的参数,例如使用 `window.open` 方法来打开一个新窗口,并使用 `width`、`height` 等参数来设置窗口的大小。 14. 表单字段设置:可以使用 JavaScript 来设置表单...

    js打开新窗口方法整理

    在网页中打开新窗口是JS中的常见操作,本文整理了多种使用JavaScript打开新窗口的方法,以下内容将详细介绍这些技术点: 1. window.open方法 window.open() 是JavaScript中最常见的打开新窗口的方法。它可以创建一...

    domino xpages 开发 视图新窗口打开视图连接

    `onComplete` 部分则在事件处理完成后执行,使用 JavaScript 的 `window.open()` 函数在新窗口中打开该 URL。 此外,你可能还需要处理链接的样式,使其看起来像一个可点击的链接。这可以通过添加 CSS 类或者直接在 ...

    三种方法让Response.Redirect在新窗口打开

    标题中提到的“三种方法让Response.Redirect在新窗口打开”,涉及到的技术点是基于***的网页编程。***是微软推出的一个用于构建Web应用程序的框架。Response.Redirect是一个在***中常用的服务器端方法,用于将用户从...

    response redirect 新窗口大开网页

    ### Response.Redirect 与新窗口打开网页的技术解析 在Web开发中,经常需要处理页面重定向以及在新窗口中打开链接的需求。本文将详细介绍如何利用ASP.NET中的`Response.Redirect`方法结合客户端脚本技术来实现这一...

    js使用post 方式打开新窗口

    在这个函数中,我们动态创建了一个`&lt;form&gt;`元素,并设置了它的`action`属性为目标URL,`target`属性为`"_blank"`以在新窗口打开,`method`属性为`"post"`表示POST请求。然后,我们遍历传入的参数对象,为每个键值对...

    js实现表单提交后不重新刷新当前页面

    本篇文章将详细讲解如何利用JavaScript实现表单提交而不刷新当前页面。 首先,我们需要一个HTML表单,如下所示: ```html &lt;!-- 表单元素,如文本输入框、选择框等 --&gt; 保存" onclick="addKp()" class="Button2...

    使用jquery实现以post打开新窗口

    本文主要讨论如何使用jQuery实现以POST方式打开新窗口,这在某些场景下是必要的,例如用户提交表单后需要在一个新的窗口中显示结果。 传统的POST请求通常用于向服务器发送数据并刷新当前页面,但有时我们可能希望在...

    js以post方式打开新页面

    然而,在某些情况下,我们可能需要以POST方式发送数据并打开新页面,例如处理表单提交、传输大量数据或者避免URL地址栏显示敏感信息等。本篇文章将详细介绍如何在JavaScript中实现POST方式的新页面打开。 首先,...

    JS弹出新窗口被拦截的解决方法

    可以考虑使用页面内的模态框(Modal)代替弹出窗口,或在用户完成某个操作(如表单提交成功后)时提示打开新窗口。 4. 检查浏览器设置和插件 在某些情况下,浏览器设置或安装的广告拦截插件可能是导致弹窗被拦截的...

    表单及表单元素

    当用户点击“表单属性”按钮时,触发`getFormPro()`函数,该函数通过`window.open()`打开一个新的窗口,并输出表单的属性值,实现了对表单属性的动态展示。 #### 六、总结 表单及其元素是Web应用中不可或缺的部分...

Global site tag (gtag.js) - Google Analytics