頁面嵌入iframe關於父子傳參調用


1、首先來說一下iframe是干什么用的

  IFRAME是HTML標簽,作用是文檔中的文檔,或者浮動的框架(FRAME)。iframe元素會創建包含另外一個文檔的內聯框架(即行內框架),通俗點說就是在一個頁面中通過寫iframe標簽來嵌入另一個頁面

2、代碼的實現

  首先是父元素

  

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>iframe父子頁面互調</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

</head>

<body>
    <h2>子頁面調用postMessage,父頁面通過監聽來獲取子頁面的數據</h2>
    <div style="width:400px; height: 200px;">
        <iframe src="son1.html" frameborder="0" style="width:100%; height: 100%;"></iframe>
    </div>
    <div id="output"></div>

    <h2>子頁面調用父頁面的一些方法</h2>

    <script>
        window.addEventListener('message', function (e) {
            console.log(e.data);
            var data = e.data;
            if (data.txt) {
                var output = document.getElementById('output');
                output.innerHTML = `新的名字是:${data.txt}`;
            }
        }, false);
        
        function fun() {
            console.log('這是父頁面打印出的');
        }
    </script>
</body>

</html>

 

  下面是子元素的代碼

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>子頁面</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

</head>

<body>
    <div style="width:300px; height: 180px; border:1px solid #000">
        請輸入一些值:<input type="text" id="text1" />
        <button onclick="sendMessageToParent()">設置</button>
        <button onclick="click()">
            點擊調用父元素的方法
        </button>
    </div>
    <script>
        function sendMessageToParent() {
            //設置test鍵值下的內容等於input框中的內容
            var txt = document.getElementById('text1').value;
            // 下面也可以用(window.parent.postMessage({txt:txt});) top代表父元素的最頂層
            window.top.postMessage({ txt: txt });
        }
        // 調用父元素的方法
        $(function () {
            parent.fun();
        })
    </script>
</body>

</html>

3、將代碼復制下來 打開就OK了

注意:此代碼會涉及到一下跨域問題 關於瀏覽器本地跨域的問題 參照我下一篇文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM