欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iframe中子父類窗口調(diào)用JS的方法及注意事項(xiàng)

 更新時(shí)間:2015年08月25日 11:51:40   作者:白豬  
本文給大家介紹iframe中子父類窗口調(diào)用JS的方法及注意事項(xiàng),介紹的超詳細(xì),需要的朋友快來(lái)學(xué)習(xí)下

一、前言

我頁(yè)面用的是EasyUI的彈出窗口里面嵌入一個(gè)iframe。

第一:父窗口打開(kāi)子窗口是一個(gè)新增用戶信息的iframe子頁(yè)面,點(diǎn)擊保存后,子窗口iframe則去調(diào)用父窗口的function closeAddWindow()方法,讓父窗口去關(guān)閉新增頁(yè)面;

第二:父窗口打開(kāi)一個(gè)設(shè)置用戶權(quán)限的iframe子窗口,首先打開(kāi)這個(gè)子窗口會(huì)全部加載數(shù)據(jù)庫(kù)表中所有的存在的權(quán)限,然后子窗口需要把加載的權(quán)限信息拼接html  Append到一個(gè)ID為<table id="tb"></table>上,這里有個(gè)問(wèn)題就是父窗口打開(kāi)子窗口加載所有權(quán)限后根本無(wú)法把html 追加到id="tb"的表格上,這個(gè)原因很簡(jiǎn)單,因?yàn)楦复翱谡{(diào)用子窗口加載所有權(quán)限信息的后,沒(méi)有找到表格元素,因?yàn)樽禹?yè)面還沒(méi)有完全加載完成,這種情況處理在這里也介紹了,給iframe注冊(cè)一個(gè)onload事件,等加載完成后再去調(diào)用追加的方法。

好了,簡(jiǎn)單到這里,讓我們瞧瞧更多的事例吧!!~~~~~~(*^__^*) 嘻嘻……

二、iframe子父窗口方法調(diào)用

2.1語(yǔ)法使用

1、父窗口嵌入iframe  

復(fù)制代碼 代碼如下:

<iframe id='myFrame' name="myFrame" src="FChild.html" width='100%' height='100%' frameborder='0'></iframe>

2、父窗口調(diào)用子窗口方法  

復(fù)制代碼 代碼如下:

myFrame.window.sonMethod();

3、子窗口調(diào)用父窗口方法   

復(fù)制代碼 代碼如下:

 parent.fatherMethod();

4、兼容瀏覽器的iframe 加載完成方法

 if (myFrame.attachEvent) {
      myFrame.attachEvent("onload", function () {
        alert("兼容IE加載的加載方法");
      });
    } else {
      myFrame.onload = function () {
        alert("兼容其他瀏覽器加載方法");
      };
    }

2.2語(yǔ)法代碼

Father.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
</head>
<body>
  <div>我是父窗口內(nèi)容</div>
  <div><input type="button" id="btnFather" value="調(diào)用子窗口方法" /></div>
  <br />
  <br />
  <br />
  <iframe id='myFrame' name="myFrame" src="FChild.html" width='100%' height='100%' frameborder='0'></iframe>
  <script type="text/javascript">
    document.getElementById("btnFather").onclick=function () {
      myFrame.window.sonMethod();
    }
    function fatherMethod() {
      alert("父窗口方法!");
    }
    if (myFrame.attachEvent) {
      myFrame.attachEvent("onload", function () {
        alert("兼容IE加載的加載方法");
      });
    } else {
      myFrame.onload = function () {
        alert("兼容其他瀏覽器加載方法");
      };
    }
  </script>
</body>
</html>

FChild.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
</head>
<body>
  <div style="border:1px solid red;"> 我是子窗體內(nèi)容</div> 
   <div > <input type="button" id="btnSon" value="調(diào)用父窗口方法" /></div> 
   <script type="text/javascript">
     document.getElementById("btnSon").onclick = function () {
       parent.fatherMethod();
     }
     function sonMethod() {
       alert("子窗口方法!");
     }
  </script>
</body>
</html>

三、什么情況下使用到 myFrame.onload 或者 myFrame.attachEvent

這里使用的是easyui框架前端框架 

<div id="divRoleUsers" title="設(shè)置用戶角色" class="easyui-window" closed="true" collapsible="false" minimizable="false" maximizable="false" style="width: 140px; height: 250px; padding: 5px;">
   </div>
 <div > <input type="button" id="btn" value="設(shè)置用戶角色" /></div> 
 <script type="text/javascript">
 $("#btn").click(function () {
showSetUserRoleWindow();
});
    //設(shè)置用戶角色
    function showSetUserRoleWindow() {
      var getSelections = $("#tt").datagrid("getSelections");
      if (getSelections.length > 1 || getSelections.length == 0) {
        $.messager.alert("錯(cuò)誤提示", "請(qǐng)選中一行數(shù)據(jù)!", "error");
        return false;
      }
      var data = getSelections[0]; //獲取選中的一行所有json的數(shù)據(jù)
      //if ($("#divRoleUsers #iframe").length != 0) {
      //  $("#divRoleUsers #iframe").remove();
      //}
      //  $('#divRoleUsers').append("<iframe id='iframe' name='iframe' src='RoleUsers_Update.aspx?UserID=" + data.UserID + "' width='100%' height='100%' frameborder='0'></iframe>");
      //錯(cuò)誤做法?。荷厦鎠rc='RoleUsers_Update.aspx?UserID=" + data.UserID + "'   這里通過(guò)拼接參數(shù)iframe的src,
      //然后通過(guò)子窗口 parent.document.getElementById("iframe").getAttribute("src");//獲取父窗體iframe的src 發(fā)現(xiàn)根據(jù)獲取不到UserID的值,為null,也是因?yàn)榧虞d順序先后的問(wèn)題,導(dǎo)致我要用給iframe注冊(cè)onload事件后才能獲取到我需要的結(jié)果
      //if (myframe.attachEvent) {
      //  myframe.attachEvent("onload", function () {
      //    alert("Local iframe is now loaded.");
      //    myframe.window.loadAllRole();
      //  });
      //} else {
      //  myframe.onload = function () {
      //    alert("Local iframe is now loaded.");
      //    myframe.window.loadAllRole();
      //  };
      //}
      if ($("#divRoleUsers #myframe").length != 0) {   //這一步是必須的?。?!,因?yàn)椴患舆@一句下面onload綁定事件只執(zhí)行一次,我需要每次加載完iframe都調(diào)用一次子窗口的方法!
        $("#divRoleUsers #myframe").remove();
      }
      $('#divRoleUsers').append("<iframe id='myframe' name='myframe' src='RoleUsers_Update.aspx' width='100%' height='100%' frameborder='0'></iframe>");
      if (myframe.attachEvent) {
        myframe.attachEvent("onload", function () {
          myframe.window.loadAllRole(); 
          myframe.window.loadUserRole(data.UserID);
        });
      } else {
        myframe.onload = function () {
          myframe.window.loadAllRole();     //調(diào)用子窗口iframe里面的方法加載所有的角色checkbox
          myframe.window.loadUserRole(data.UserID);   //接著傳遞用戶ID過(guò)去給子窗口的方法,給用戶擁有的角色設(shè)置checkbox選中
        };
      }
      $('#divRoleUsers').window('open');
    }
  </script>

 四、總結(jié)幾個(gè)關(guān)鍵點(diǎn)吧

父子窗口方法的調(diào)用,注意加載的先后順序才能獲取到想要的結(jié)果,遇到問(wèn)題常用alter()測(cè)試或者瀏覽器的開(kāi)發(fā)者工具監(jiān)控

以上內(nèi)容就是本文中介紹iframe中子父類窗口調(diào)用JS的方法及注意事項(xiàng),希望大家喜歡。

相關(guān)文章

最新評(píng)論