美文网首页
使用postMessage传值遇到的问题

使用postMessage传值遇到的问题

作者: 一个胖猴 | 来源:发表于2019-04-15 14:15 被阅读0次

        在开发中我们会遇到俩个窗口传值,我一般会使用俩种传值方式,一、使用地址栏传值,然后另一个窗口取地址栏内容解析。二、使用sessionStorage进行传值。但最近看面试题发现还可以使用postMessage传值,但是遇到一个坑,具体原因本人也是没有找出,只是做了简单分析,希望看到这篇文章的大佬帮忙解决。

第一个页面的代码如下

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8">

    <title>Title

<button id="btn">dianji

    window.sessionStorage

document.getElementById('btn').onclick =function () {

var popup = window.open('test2.html');

        /// When the popup has fully loaded, if not blocked by a popup blocker:

        setTimeout(function() {

// 当前窗口向目标源传数据

            popup.postMessage('asdasd', '*');

        }, 0);

    }

</html>

第二个页面的代码如下:

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8">

    <title>Title

    window.addEventListener('message', function(e) {

alert(e.data)

// console.log(e.source === window.opener);  // true

    });

</html>

现在我与到的问题是,如果第一个页面去掉setTimeout 第二个页面就会触发不了message事件。据我猜测可能是如果去掉第一个页面的setTimeout 可能页面会直接发送消息,但此时第二个页面还在加载中,但消息已经发送过,所以触发不了。还希望看见此篇文章的大佬解决

相关文章

  • 使用postMessage传值遇到的问题

    在开发中我们会遇到俩个窗口传值,我一般会使用俩种传值方式,一、使用地址栏传值,然后另一个窗口取地址栏内容解...

  • iframe高度自适应

    1、PostMessage传值子页面:window.parent.postMessage({'frameHeigh...

  • H5调用IOS方法遇到的问题

    h5中的方法: 问题一:postMessage必须传值,即使IOS中的方法并不需要这个值问题二:finish方法写...

  • window.postMessage解决前端ajax跨域问题

    postMessage畅快解决跨域问题 本文主要是记录使用window.postMessage解决ajax跨域问题...

  • postMessage跨站传值

    背景: 从需求出发,AB两个单独部署的项目,其域名不同,B又需要A的参数获取后端接口的数据。比如需要token以便...

  • 高德地图添加文本以及点击事件

    遇到问题: 文本框点击事件传值不匹配,使用自定义属性获取所传数据id

  • 2018-09-05

    组件传值问题 父组件给子组件传值应该使用props。子组件要给父组件传值,需要调用父组件传递的方法。props传值...

  • 填坑记

    后台像前台传值时遇到一个问题: 坑1 使用console.log打印后台传来的json值时只显示[object O...

  • 【iOS】传值方式——通知

    一般正向传值使用属性,而反向传值使用协议或Block即可,但是我们有时候也会遇到需要隔页面传值的情况,比如一连回退...

  • checkbox不选中不传值问题解决

    前言 在使用layui时候,遇到个问题,我需要复选框选中传值传1,未选中的传0 如果你直接简单的这样拿,你会发现你...

网友评论

      本文标题:使用postMessage传值遇到的问题

      本文链接:https://www.haomeiwen.com/subject/xyztwqtx.html