iframe嵌套页面传值

这篇具有很好参考价值的文章主要介绍了iframe嵌套页面传值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

        最近负责的项目大部分都是在别人的网站中通过iframe标签嵌套我方页面,而且项目没有使用近年来流行的框架,所以在本文中的代码只是基于js进行编写。

一、父向子传值

        方法一:通过src拼接上需要传递的参数

        父页面

<body>
    <div>父级页面</div>
    <iframe src="2.html" id="frame1" frameborder="0"></iframe>
    <script>
        // 方法一:通过src向子元素传递参数
        let url = document.getElementById('frame1').src + '?name=LeeYuFan&sex=女' //拼接上需要传递的参数
        document.getElementById('frame1').src = url
    </script>
</body>

        子页面

<body>
    <div>子页面--2.html页面</div>
    <script>
        window.onload = function(){
            let name = getUrlParam('name')
            let sex =  decodeURIComponent(getUrlParam('sex')) //解码
            console.log(name,sex)
        }
        function getUrlParam(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); // 构造一个含有目标参数的正则表达式对象
            var r = window.location.search.substr(1).match(reg); // 匹配目标参数
            if (r != null)
                return r[2];
            return null; // 返回参数值
        }
    </script>
</body>

        方法二:通过window对象的postMessage()方法

数据发送方(父页面)

<body>
    <div>父级页面</div>
    <iframe src="2.html" id="frame1" frameborder="0"></iframe>
    <script>
        window.onload = function(){
            // 方法二:通过postMessage()方法
            let send = document.getElementById('frame1').contentWindow;
            send.postMessage("被传递的数据",'*')
        }
    </script>
</body>

数据接收方(子页面)

<body>
    <div>子页面--2.html页面</div>
    <script>
       window.onload = function(){
            window.addEventListener('message',function(e){
                console.log(e.data)
            })
       }
    </script>
</body>

注:

1、postMessage(参数1,参数2,[参数3])方法有三个参数,参数1代表将要发送的数据;参数2代表指定哪些窗口能结合搜到消息事件,其值可以是*或一个URL,(‘*’代表无限制);参数3可选,是一串和 message 同时传递的 Transferable 对象。这些对象的所有权将被转移给消息的接收方,而发送一方将不再保有所有权。

2、接收方的回调函数中包含三个常用的数据:

        e.source --消息源,消息发送的窗口/iframe

        e.origin -- 消息源的URI,用来验证数据源

        e.data -- 发送过来的数据

二、子向父传值

方法一:子页面把要传递给父元素的参数定义为全局变量,然后父页面直接获取

子页面定义变量

<body>
    <script>
        var name = 'LeeYuFan'
    </script>
</body>

父页面读取变量

<body>
    <div>父级页面</div>
    <iframe src="3.html" id="frame2" frameborder="0"></iframe>
    <script>
        window.onload = function(){
            console.log(document.getElementById('frame2').contentWindow.name)
        }
    </script>
</body>

方法二:使用postMessage()方法

子页面

<body>
    <div>子页面--2.html页面</div>
    <script>
      window.parent.postMessage('123','*')
    </script>
</body>

父页面文章来源地址https://www.toymoban.com/news/detail-810236.html

<body>
    <div>父级页面</div>
    <iframe src="2.html" id="frame1" frameborder="0"></iframe>
    <script>
        window.onload = function(){
            window.addEventListener('message',function(e){
                console.log(e.data)
            })
        }
    </script>
</body>

到了这里,关于iframe嵌套页面传值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • h5|web页面嵌套iframe传参给cocosCreator

    目录 一、快速浏览 二、详细实现与项目代码 三、安全性评估——iframe 实现效果: 一、快速浏览 在h5页面中,使用JavaScript获取需要传递的参数,如下: 使用iframe嵌入cocosCreator游戏页面,同时将参数作为url的query string传递,如下: 在cocosCreator游戏页面中,使用JavaScript获取ur

    2024年02月02日
    浏览(40)
  • vue项目关于iframe嵌套的页面,在切换tab标签时会被重新刷新的问题处理方案

    这两天工作中遇到一个这样的需求,切换tab标签时,要求对应的tab页面不刷新,但是项目中加入了一部分含有iframe的页面,在切换路由的过程中,如果使用keep-alive是达不到缓存ifram嵌套的页面效果的。 vue中的keep-alive 1.原理:vue 的缓存机制并 不是直接存储 DOM 结构 ,而是将

    2024年02月04日
    浏览(80)
  • Vue 整合 Element UI 、路由嵌套和参数传递(五)

    1.1 工程初始化         使用管理员的模式进入 cmd 的命令行模式,创建一个名为 hello-vue 的工程,命令为: 1.2 安装依赖         我们需要安装 vue-router 、 element-ui 、 sass-loader 和 node-sass 四个插件 1.3 npm 命令解释          npm install moduleName :安装模块到项目目录下

    2024年02月13日
    浏览(43)
  • 获取Layui iframe页面的url参数

    弹出layui iframe页面 iframe页面中获取参数

    2024年02月12日
    浏览(56)
  • Vue前端框架10 组件的组成、组件嵌套关系、组件的注册方式、组件传递数据(props $emit)、数组传递多种数据类型、组件传递props校验、组件事件

    组件最大的优势就是可复用性 通常将组件定义在.vue中,也就是SFC单文件组件 组件的基本组成: 组件允许我们将UI划分为独立的、可重用的部分,并且对每个部分单独思考 实际应用中组件常常被组件成层层嵌套的树状结构 Vue组件使用前要注册,注册有两种方式:全局注册和

    2024年02月09日
    浏览(50)
  • 微信小程序页面传递参数方法

            页面跳转方法有很多中,但经常会通过一个页面传递参数给另一个页面,非常的常见。但数据量大的时候,通常用字符串传递,但会显得过于臃肿,下面介绍页面传递参数的各种方式。 例如:A跳转到B页面携带参数 特点:只能传递单个页面,数据量少 当然,如果过

    2024年02月03日
    浏览(80)
  • Vue页面路由参数的传递和获取

    vue 页面路由切换时传参的方式有如下几种: 动态路由参数 它隐藏字段信息,相对于来说较安全,同时地址栏中的地址也相对较短 它必须是先定义后使用,一般用于根据固定参数,返回对应的数据所用 query字符串 ?id=1 通过search字符串的方式来在地址栏中传递数据,相对于来

    2024年02月11日
    浏览(42)
  • 微信小程序详细讲解页面传值,globalData,wx,web前端开发基础

    在其他非app.js文件中修改: var app = getApp() ​ app.globalData.hasLogin = true 二、 使用 wx.navigateTo 与 wx.redirectTo 的时候,可以将部分数据放在 url 里面,并在新页面 onLoad 的时候初始化 // Navigate wx.navigateTo({ url: ‘…/pageD/pageD?name=raymondgender=male’, }) ​ // Redirect wx.redirectTo({ url: ‘…/p

    2024年04月25日
    浏览(60)
  • 外部h5跳转小程序页面传递参数

    h5页面传递参数:h5页面的参数是点击进入该页面利用api直接获取code跟click_id。 跳转方法一:  利用写好的接口将获取到的小程序码添加到a标签的路径进行跳转  跳转方法二: 利用接口跳转至对应的小程序    小程序接收h5传过来的数据:在app.js中,利用onLaunch生命周期获取

    2024年02月16日
    浏览(48)
  • 微信小程序如何实现页面传参和页面传递多个参数

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 下面时多个参数页面传参的方式   通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:

    2024年02月11日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包