zoukankan      html  css  js  c++  java
  • iframe嵌套页面 跨域

    父级调用iframe方法:

    document.getElementById("iframe").contentWindow.func(data1,data2...)

    子级 iframe中调用 父级html中方法:

    parent.func(data1,data2...)

    使用的前提条件是要在同域名下,想要如果域名不同,甚至端口不同,都会存在 跨域 的问题。

    简单示例demo:   

    a.html 页面

    <html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>A</title> 
    </head> 
    <body> 
        父级:A页面<br/>
        <textarea id="a_text">来自B页面密码...</textarea><br/> 
        <button id="a_button">A页面获取B页面数据</button><br/><br/>
        <iframe src="b.html" width="500px" height="200px" id="iframe"></iframe> 
    <!--     <iframe src="b.html" width="500px" height="200px" id="iframe" frameborder="0" scrolling="no" style="position:absolute;right:0;left:0"></iframe> -->
        <script> 
        document.getElementById("a_button").onclick = function(){ 
        alert(document.getElementById("iframe").contentWindow.document.getElementById("b_text").value); 
      }
        </script> 
    </body> 
    </html>

    b.html 页面

    <html>
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>B</title>
    </head>
    <body> 
        子级:B页面<br/>
        <textarea id="b_text">来自A页面密码...</textarea><br/>
        <button id="b_button">B页面获取A页面数据</button><br/> 
        <script> 
        document.getElementById("b_button").onclick = function(){ 
            alert(parent.document.getElementById("a_text").value); 
        } 
        </script>
    </body>
    </html>

    使用window.postMessage方法解决跨域:

    简单示例demo:

    a.html 页面

    <html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>A</title> 
    </head> 
    <body> 
        父级:A页面<br/><br/>
        <iframe src="b.html" width="500px" height="200px" id="iframe"></iframe> 
        <script> 
            window.addEventListener('message', function(e) {
                alert(JSON.stringify(e.data));
                console.log('获取子级B页面返回值:');
                console.log(e.data);
            })
    
        </script> 
    </body> 
    </html>

    b.html 页面

    <html>
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>B</title>
    </head>
    <body> 
        子级:B页面<br/>
        <button id="b_button">B页面发送A页面数据</button><br/> 
        <script> 
        document.getElementById("b_button").onclick = function(){ 
            var param = {'name':'admin'};
            window.parent.postMessage(param,'*');
        } 
        </script>
    </body>
    </html>
  • 相关阅读:
    Oracle创建表空间、创建用户以及授权、查看权限
    Oracle建立表空间和用户
    Oracle创建用户、表空间、导入导出、...命令
    C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
    maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
    配置整合DWR3.0和Spring2.5使用annotation注解
    jQuery打印
    个项目涉及到的50个Sql语句(整理版)
    编写安卓平台程序的几种方式
    豪总说
  • 原文地址:https://www.cnblogs.com/cxx8181602/p/11174662.html
Copyright © 2011-2022 走看看