第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

通過(guò)window.opener實(shí)現(xiàn)子頁(yè)面對(duì)父頁(yè)面的操作

標(biāo)簽:
JavaScript

在实际项目中,我们通常是通过父级页面去打开子页面,例如一些列表页面会通过url上面携带的参数去打开子页面,这是根据参数就可以调用对应的函数获取不同的数据,达到动态渲染子页面的效果。这是一个很常见的功能,但是如果需求是反过来呢?比如有一个需求是这样子的:当用户在子页面进行了点击操作之后,改变父级页面的内容,这是我们改怎么编码呢?答案是通过window.opener,具体改怎么做呢,下面为大家介绍一下

https://img3.sycdn.imooc.com/5efd52b50001951106520215.jpg

https://img3.sycdn.imooc.com/5efd52f20001045712170421.jpg

首先写一个函数,通过window.open去打开子页面

https://img4.sycdn.imooc.com/5efd5a5d0001752b17160877.jpg

function openTest(){
            var url = "0622-1.html";//实际项目中,url应该换成参数,在调用是传参
            var openPageCreate = window.open(url, '_blank', "123456", 'width='+(window.screen.availWidth-10)+',height='+(window.screen.availHeight-70)+ ',top=5,left=35,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
            openPageCreate.moveTo(5,35);
            openPageCreate.resizeTo(window.screen.availWidth - 10, window.screen.availHeight - 70);
        }

打开子页面之后,通过window.opener获取到父页面

https://img4.sycdn.imooc.com/5efd5aba00017b3817070937.jpg

window.opener.document.getElementById("p").innerHTML="子页面修改父页面";//向父页面传值

操作起来和平时写法一直,也可以通过缓存(如localStorage)等,把需要的数据保存起来,再在父页面获取

https://img1.sycdn.imooc.com/5efd781f000145bb15610632.jpg

https://img1.sycdn.imooc.com/5efd785f0001f6bd08620466.jpg

父页面代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>父页面</title>
        <style>
            .son{
                width: 100px;
                height: 100px;
                background-color: #006C66;
            }
        </style>
    </head>
    <body>
        <div>
            <ul>
                <li>
                    <a href="0622-1.html?test=1">通过url上携带的参数,执行子页面函数</a>
                </li>
                <li>
                    <a href="0622-1.html?test=2">子页面链接2</a>
                </li>
                <li>
                    <a href="0622-1.html?test=3">子页面链接3</a>
                </li>
                <li>
                    <a href="0622-1.html?test=4">子页面链接4</a>
                </li>
            </ul>
        </div>
        <div id="p">这是测试内容</div>
        <div id="son" class="son">
            
        </div>
        <div id="p2">
            会被改变吗
        </div>
        <button onclick="openTest()">打开底表</button>
    </body>
    <script>
        
        function openTest(){
            var url = "0622-1.html";//实际项目中,url应该换成参数,在调用是传参
            var openPageCreate = window.open(url, '_blank', "123456", 'width='+(window.screen.availWidth-10)+',height='+(window.screen.availHeight-70)+ ',top=5,left=35,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
            openPageCreate.moveTo(5,35);
            openPageCreate.resizeTo(window.screen.availWidth - 10, window.screen.availHeight - 70);
        }
        function sonFun(){//打开子页面的时候,会执行这个方法
            var sonContent =  JSON.parse(localStorage.getItem('sonData'));
            document.getElementById("son").innerHTML = sonContent.content;
            document.getElementById("son").style.background = "yellowgreen";
        }
    </script>
</html>

子页面代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>子页面</title>
    </head>
    <body onload="allFun()">
        <div>测试数据</div>
        <button onclick="changeP()">改变</button>
    </body>
    <script>
        function allFun(){
            window.opener.document.getElementById("p").innerHTML="子页面修改父页面";//向父页面传值
            //window.opener.location.reload(); //刷新父级页面
            var testData = {name:"测试",id:"123456",content:"缓存数据给父级"};
            dataTest(JSON.stringify(testData));
            window.opener.sonFun();//放在要缓存的数据之后
        }

        function dataTest(data){//缓存数据
            localStorage.setItem('sonData',data); 
        }
        function changeP(){
            window.opener.document.getElementById("p2").innerHTML="改变内容";//向父页面传值
        }
    </script>
</html>


點(diǎn)擊查看更多內(nèi)容
2人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消