使用window.open打开新窗口,以post方式传参数

如果在使用window.open打开新窗口(可以控制尺寸)的时候,
不使用get方式传参,而是用post传。
这件事情我当时觉得不太可能。没想到很快他就找到一个实现方式,试验通过了。
呵呵,看来好多看似不可能的东西,换个角度思考,就成了可能。
方法一:
js 代码
  1. <script>
  2. functionopenSpecfiyWindown(windowName){
  3. window.open('about:blank',windowName,'width=700,height=400,menubar=no,scrollbars=no');
  4. }
  5. </script>
xml 代码
  1. <formid="editForm"name="editForm"method="post"action="viewUser"target="colors123"onsubmit="openSpecfiyWindown('colors123')">
  2. <fieldset>
  3. <inputtype="hidden"id="id"name="id"value="$!{User.id}"/>
  4. <inputtype="submit"/>
  5. </fieldset>
  6. </form>
方法二:
<script>
function openNewSpecifiedWindow( windowName )
{
window.open('about:blank',windowName,'width=700,height=400,menubar=no,scrollbars=no');
}
</script>


<form id="editForm" name="editForm" method="post" action="viewUser" target="newWindow" οnsubmit="openNewSpecifiedWindow( 'newWindow' )">
<fieldset>
<input type="hidden" id="id" name="id" value="/$!{User.id}" />
<input type="submit" />
</fieldset>
</form>

原理其实很简单,在提交Form时新打开一个"newWindow"窗口,然后把数据提交到里面。如果需要新窗口全屏可以用'screen.width'和'screen.height'两个值代替上面的700和400

如果需要关闭原先的窗口,用普通的方法会有IE提示框的,经过在网上查找可以用以下方法实现

window.opener=null;
window.open('','_top');
window.top.close();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用`window.open`打开不同源的新窗口时,由于跨域安全策略的限制,无法直接在新窗口中设置sessionStorage和localStorage。这是因为浏览器对不同源的窗口之间的据访问进行了限制。 但是,你可以通过以下方法在不同源的新窗口中传递据: 1. 使用URL参:将需要传递的据作为URL参附加到打开的URL中,然后在新窗口中解析URL参来获取据。例如: ```javascript var newWindow = window.open('https://example.com?data=value'); ``` 在新窗口的页面中,你可以使用JavaScript解析URL参来获取据。 2. 使用postMessage API:使用postMessage API可以实现窗口间的安全跨域通信。在打开新窗口中,你可以使用`window.postMessage`发送消息,并在新窗口的页面中添加事件监听器来接收消息。例如: 在当前窗口: ```javascript var newWindow = window.open('https://example.com'); newWindow.postMessage('value', 'https://example.com'); ``` 在新窗口的页面中添加事件监听器: ```javascript window.addEventListener('message', function(event) { // 判断消息来源是否可信 if (event.origin === 'https://example.com') { // 获取传递的据 var data = event.data; // 在新窗口中处理据 sessionStorage.setItem('key', data); } }); ``` 通过以上方法,你可以在不同源的新窗口中传递据,并在新窗口中进行处理。 请注意,使用postMessage API时需要确保消息来源可信,以防止恶意代码的注入和跨站点脚本攻击。 希望这可以帮助到你!如果你有更多问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值