动态加载js,css文件(跨iframe)

1、动态加载js,css文件(用原生js和jquery)

iframe结构:

frame0(父)
frame2(子)
frame3(子)

frame2中触发事件,动态的向frame3中 加载js、css文件和 dom元素?


*同级之间可以调用,可以 通过 子-父-子 的方式调用同级
parent.parentFram(“这个方法在调用其他子farme”);




1.jquery的append()
速度快,同步(需要引入jquery)

var oBody = document.getElementById("frame3_id").contentWindow.$("body");

var str = "<div>...</div>"
  var scriptTag = document.getElementById("frame3_id").contentWindow.document.getElementById("pop");
  if(!scriptTag){
  oBody.append(str);
  }

var oScript= document.createElement("script"); 
   oScript.id = "oScript1"; 
   oScript.type = "text/javascript";  
   oScript.src="/test.js"; 
   var oTag1 = document.getElementById("frame3_id").contentWindow.document.getElementById("oScript1");
  if(!oTag1){
  oBody.append(oScript);
  }

document.getElementById("frame3_id").contentWindow.test(); // 调用frame3_id 中的test()方法

***********************************
上述例子:a.需要引入jquery; 
***********************************

2.js 的appendChild()
速度慢,异步(需要判断js是否加载完毕)

列子2:
var str = "<div>...</div>"
var popDiv=document.createElement('div'); 
popDiv.style.xx = xxx;
popDiv.id = "pop";
        popDiv.innerHTML = str;
var oBody = document.getElementById("frame3_id").contentWindow.document.getElementsByTagName("body")[0]; 
  var oHead = document.getElementById("frame3_id").contentWindow.document.getElementsByTagName("head"); 

if(oHead && oHead.length){  
   oHead = oHead[0];  
}else{  
   oHead = oBody;  
}

var elemDivTag = document.getElementById("frame3_id").contentWindow.document.getElementById("pop");
  if(!elemDivTag){
  oBody.appendChild(popDiv)
  }

var oScript= document.createElement("script"); (css类似)
    oScript.id = "oScript1"; 
   oScript.type = "text/javascript";  
   oScript.src="/test.js"; 
var scriptTag = document.getElementById("main").contentWindow.document.getElementById("oScript1");
  if(!scriptTag){
  oHead.appendChild(oScript);
  }
oScript.onload = oScript.onreadystatechange = function(){ 
if ((!this.readyState) || this.readyState == "complete" || this.readyState == "loaded" ){
document.getElementById("main").contentWindow.test();  // test()方法 在 引入的js文件中
}else{
  console.info("can not load the oScript2.js file");  
   }    
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值