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

发布时间 2023-07-31 10:13:02作者: sunny123456

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 直接访问该页面的内容,也无法获取该页面的返回值。