zoukankan      html  css  js  c++  java
  • iframe父子页面互相调取方法元素

    父页面

    // parent.html
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Parent</title>
        <style>
          body,
          html {
            padding: 0;
            margin: 0;
          }
          .header-wrap {
             100%;
            height: 40px;
            line-height: 40px;
            padding: 0 20px;
            background-color: darkcyan;
            color: #ffffff;
            margin: 0;
            display: flex;
            align-items: center;
            justify-content: space-between;
            font-size: 16px;
            box-sizing: border-box;
          }
          .header-btn {
            font-size: 12px;
            cursor: pointer;
          }
          #subPage {
            padding: 0;
            margin: 0;
             100%;
            height: calc(100vh - 40px);
            background-color: #f9f9f9;
          }
        </style>
      </head>
      <body>
        <div class="header-wrap">
          <span>父页面标题</span>
          <span class="header-btn" onclick="getChildrenFun()">保存</span>
        </div>
        <iframe id="subPage" src="./children.html" frameborder="0"></iframe>
        <script>
          function isParent() {
            console.log('这里是父页面')
          }
          function getChildrenFun() {
            console.log('调子页面方法')
            const subPageFun = document.querySelector('#subPage').contentWindow
            // 调方法
            subPageFun.isChildren()
            // 取样式
            const subPageDoc = document.querySelector('#subPage').contentDocument
            console.log('子页面样式获取--子页面高度', subPageDoc.body.clientHeight)
            console.log('子页面样式获取--子页面指定元素高度', subPageDoc.querySelector('.abc-box').clientHeight)
          }
        </script>
      </body>
    </html>
    

    子页面

    // children.html
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Children</title>
        <style>
          body,
          html {
            padding: 0;
            margin: 0;
          }
          .sub-page-wrap {
            margin: 0;
            padding: 20px;
            box-sizing: border-box;
          }
          .abc-box {
             100px;
            height: 100px;
            background-color: #eee;
            margin-top: 20px;
            padding: 20px;
            box-sizing: border-box;
          }
        </style>
      </head>
      <body>
        <div class="sub-page-wrap">
          <div>子页面内容</div>
          <button onclick="getParentFun()" style="margin-top: 20px;">调用父页面方法</button>
          <div class="abc-box">abc</div>
        </div>
        <script>
          function isChildren() {
            console.log('这里是子页面')
          }
          function getParentFun() {
            console.log('调父页面方法')
            var mainPageFun = parent
            // 调方法
            mainPageFun.isParent()
            // 调样式
            var mainPageDoc = window.parent.document
            console.log('父页面样式获取--父页面高度', mainPageDoc.body.clientHeight)
            console.log('父页面样式获取--父页面指定元素高度', mainPageDoc.querySelector('.header-wrap').clientHeight)
          }
        </script>
      </body>
    </html>
    
  • 相关阅读:
    ASP.NET中彩票项目中的计算复式投注的注数的方法
    移除http响应中的多余的头(X-AspNet-Version,Server等)
    获取枚举类型的描述description
    支付宝支付后回调通知中responseTxt=true isSign=False可能的问题
    《JAVA与模式》之门面模式
    《JAVA与模式》之组合模式
    《JAVA与模式》之参考资料
    《JAVA与模式》之有感
    从桥接模式与策略模式谈起(转载)
    《JAVA与模式》之桥接模式
  • 原文地址:https://www.cnblogs.com/unclefang/p/13433934.html
Copyright © 2011-2022 走看看