首页 > 其他分享 >window.open()参数传递及获取

window.open()参数传递及获取

时间:2023-07-31 10:24:33浏览次数:48  
标签:窗口 name 参数传递 window 新窗口 open id

window.open()参数传递及获取
原文链接:https://wenku.csdn.net/answer/cd7f78922c64bad2c7854b55a947fcc0

window.open()是JavaScript中打开新窗口的方法。它可以接受三个参数,分别是要打开的URL、窗口名称和窗口特性。其中,窗口特性可以是一个字符串,包含多个用逗号隔开的键值对,用于设置新窗口的属性,如大小、位置、是否有菜单栏等。

如果要在新窗口中传递参数,可以将参数拼接在URL后面,例如:window.open('http://example.com?id=123')。在新窗口中,可以通过location.search获取URL中的参数,例如:var id = location.search.substring(1);

另外,如果要在新窗口中访问父窗口的变量或函数,可以使用window.opener对象,例如:var parentVar = window.opener.parentVar; window.opener.parentFunc();

相关问题

window.open传参vue获取参数

可以通过URL参数的方式将参数传递给新打开的窗口,然后在新窗口中通过window.location.search获取URL参数,再用vue的路由或者状态管理器来传递参数。

例如,以下代码将参数id和name传递给新窗口:

let id = 1;
let name = 'John';
window.open(`/newPage?id=${id}&name=${name}`);

在新窗口中可以通过以下方式获取参数:

let params = new URLSearchParams(window.location.search);
let id = params.get('id');
let name = params.get('name');

然后可以将参数存储在vue的状态管理器中:

this.$store.commit('setId', id);
this.$store.commit('setName', name);

或者通过路由传递参数:

this.$router.push({ path: '/newPage', query: { id: id, name: name } });

然后在新页面中可以通过$route.query来获取参数:

let id = this.$route.query.id;
let name = this.$route.query.name;

php window.open()获取返回值

在使用 window.open() 函数创建一个新的窗口时,无法直接获取该窗口的返回值。这是因为该函数是异步的,新打开的窗口需要时间来加载和处理内容,而 JavaScript 代码会继续执行,无法等待窗口加载完成后再获取返回值。

但是,可以通过在新窗口中执行 JavaScript 代码来将返回值传递回原始窗口。具体方法如下:

  1. 在打开新窗口时,给该窗口添加一个唯一的标识符,例如一个随机数或者时间戳。

  2. 在新窗口中定义一个 JavaScript 函数,该函数将需要返回的值作为参数,然后调用原始窗口中的一个 JavaScript 函数,并将返回值作为参数传递给它。

    function sendValueToParent(value) {
        window.opener.receiveValueFromChild(value);
    }
    
  3. 在原始窗口中定义一个 JavaScript 函数,该函数将接收从新窗口传递过来的值。

    function receiveValueFromChild(value) {
        console.log(value);
    }
    
  4. 在打开新窗口的代码中,为 window.open() 函数设置一个定时器,定期检查新窗口是否已经加载完毕。如果新窗口已经加载完毕,则调用在新窗口中定义的 JavaScript 函数,将返回值传递回原始窗口。

    var childWindow = window.open('child.html?id=123456', '_blank');
    var intervalId = setInterval(function() {
        if (childWindow.closed) {
            clearInterval(intervalId);
        } else if (childWindow.document.readyState === 'complete') {
            childWindow.sendValueToParent('Hello, World!');
            clearInterval(intervalId);
        }
    }, 1000);
    

需要注意的是,该方法只适用于在同一个域名下打开的新窗口。如果打开的是外部网站或者跨域的页面,则无法通过 JavaScript 直接访问该页面的内容,也无法获取该页面的返回值。

标签:窗口,name,参数传递,window,新窗口,open,id
From: https://www.cnblogs.com/sunny3158/p/17592723.html

相关文章

  • window.open()打开窗口的几种方式,a标签的href
    window.open()打开窗口的几种方式原文链接:https://www.jianshu.com/p/ed4c911105451.在当前窗口打开百度,并且使URL地址出现在搜索栏中.window.open("http://www.baidu.com/","_search");window.open("http://www.baidu.com/","_self");2.在一个新的窗口打开百度window.......
  • OpenAI API访问速度不佳?试试用Vercel来加速!
    前言众所周知,使用openAIAPI在国内访问体验并不佳,经常遇到访问较慢或者访问失败的问题。本文着重讲讲怎么解决这个问题,让我们日常开发和使用能够更方便的体验到AI带来的便利为了帮大家省钱,也为了方便操作,实现这套方案只需要以下这三样东西一个可使用的OpenAIkey一个可以正......
  • IIS创建网站报错 \\?\C:\Windows\inetsrv\config\applicationHost.config
    ​ ​​编辑​​编辑 现象:IIS创建不了网站,IIS配置没有发生改变 原因:服务器C盘无空间,释放空间后问题解决。​......
  • OpenCloudOS 与PolarDB全面适配
    近日,OpenCloudOS开源社区签署阿里巴巴开源CLA(ContributionLicenseAgreement,贡献许可协议),正式与阿里云PolarDB开源数据库社区牵手,并展开OpenCloudOS(V8)与阿里云开源云原生数据库PolarDB分布式版、开源云原生数据库PolarDBPostgreSQL版兼容性适配。经过......
  • windows 获取系统中所有应用程序
    前言:  记录下。重点    RegistryView.Registry64与RegistryView.Registry32。有些程序在Registry64中,有些程序在Registry32中。 代码查看代码varlocalMachine=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64......
  • OpenResty 入门实战(2)--简单使用
    本文主要介绍 OpenResty 结合lua的使用,Nginx功能的一般使用可参考:Nginx入门实战(2)--简单使用;文中所使用到的软件版本:Centos7.9.2009、OpenResty1.21.4.2。1、helloworldserver{listen9096;server_namelocalhost-9096;access_loglogs/access-9096.log;......
  • opencv-python 卷积操作
    1图像卷积图像卷积就是卷积核在图像上按行滑动遍历像素时不断的相乘求和的过程,卷积可以用来提取特征,去噪,平滑等。如下图: ......
  • 2023 年 7 月 23 日机器学习发生了什么:OpenAI 的突破性变化、更好的关注和……
    保留网络:大型语言模型转换器的继承者他们引入了一种非常有前途的注意力变体。基本上,他们:抛弃软最大值让每个令牌只关注一个状态向量,而不是所有以前的令牌在每个头上分别做层规范相对于序列维度呈指数衰减注意力,每个头部具有不同的衰减系数这使他们能够有效地在......
  • opencv-python霍夫变换
    1霍夫线检测原理霍夫变换常用来提取图像中的直线和圆等几何形状。在笛卡尔坐标系中,直线可以表示为y=kx+q 也就是说通过变量k,q可以确定一条直线,把直线写成关于k,q的函数,进行空间转换,转换后的空间称为霍夫空间。也就是说:笛卡尔坐标系中的一条线对应了霍夫空间的一个点。反过......
  • opencv顺时针,逆时针旋转视频并保存视频
    原视频代码importcv2#打开视频文件video=cv2.VideoCapture('inference/video/lianzhang.mp4')#获取原视频的宽度和高度width=int(video.get(cv2.CAP_PROP_FRAME_WIDTH))height=int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))#创建视频编写器并设置输出视频参数fou......