当前位置: 代码迷 >> Web前端 >> iframe运用总结和小例子 + window.open
  详细解决方案

iframe运用总结和小例子 + window.open

热度:126   发布时间:2012-10-06 17:34:01.0
iframe使用总结和小例子 + window.open

从frame中跳出并转向:

parent.window.location.href = "<%=basePath%>package.do";

或top.window.location.href = "<%=basePath%>package.do";

?

?

<iframe name="myFrame" src="child.html"></iframe>

1、方法调用:

父窗口调用子窗口:myFrame.window.functionName();
子窗品调用父窗口:parent.functionName();

2、属性调用:
1、IE中使用方法:
父窗口调用子窗口:iframe_ID.iframe_document_object.object_attribute = attribute_value
例子:onClick="iframe_text.myH1.innerText='http://www.pint.com';"
子窗口调用父窗口:parent.parent_document_object.object_attribute = attribute_value
例子:onclick="parent.myH1.innerText='http://www.pint.com';"

2、Firefox中使用方法:
上面在IE下没有问题,但在firefox下不正常。在firefox下,应该是如下调用方法:
父窗口调用子窗口:window.frames["iframe_ID"].document.getElementById("iframe_document_object"-).object_attribute = attribute_value
例: window.frames["iframe_text"].document.getElementById("myH1").innerHTML= "http://hi.wonsoft.cn ";
子窗口调用父窗口:parent.document.getElementById("parent_document_object").object_attribute = attribute_value
例: parent.document.getElementById("myH1").innerHTML = "http://wonsoft.cn ";

参考:http://keyknight.blog.163.com/blog/static/36637840200973101612654/

?

点击前页面:


分别点击后页面:



?

父窗口iframe.jsp:

<script>
  	function say() {
   		alert("I'm at parent.html");
   	} 

	function callChild()
	{      		
   		ifr.window.say();    //调用iframe中say方法
   		
   		//修改iframe中属性值
   		ifr.myH2.innerHTML = "Child H1 changed!";  //IE
   		//ifr.document.getElementById("myH2").innerHTML = "Child H1 changed!"; //IE下两种方法都可以
   		
   		//window.frames["ifr"].document.getElementById("myH2").innerHTML = "Child H1 changed in FireFox!" ; //FireFox
	}	    
</script>
  <body>
  	Parent:
  	<h1 id="myH1">Parent H1</h1> 
  	<input   type=button   value="调用child.html中的函数say()" onclick="callChild()"/>  
    <iframe id="ifr" name="ifr" src="child.jsp" scrolling="auto"></iframe>    
  </body>

?子窗口child.jsp:

<script type="text/javascript">      
	function say()   
	{   
        alert("I'm at child.html");   
	} 

	function callParent() {
   		parent.say();    //调用父窗口say方法
   		parent.myH1.innerHTML = "Parent H1 Changed!"; //IE
   		//parent.document.getElementById("myH1").innerHTML = "Parent H1 changed in FireFox!" ; //FireFox
   	} 
</script>    
  </head>
  
  <body>
    This is my JSP page. <br>
    <h1 id="myH2">Child H1</h1> 
    <input   type=button   value="调用parent.html中的say()函数"   onclick="callParent()">    
  </body>

?

自适应高度:

function iFrameHeight() { 		 
		//var subWeb = document.frames ? document.frames["ifr"].document : ifm.contentDocument;   
		var subWeb = document.frames ? document.frames["ifr"].document : ifm.contentWindow.document;   
		
		var ifm= document.getElementById("ifr");  
		if(ifm != null && subWeb != null) {
			//alert(subWeb.body.scrollHeight);
		   setTimeout(function(){ifm.height = subWeb.body.scrollHeight;},1000);
		   //需要使用延迟方法,否则第一次时不会自动适应高度
		   //不用延迟方法用alert()也可以 ,但一般不需要alert		   
		}   
	}

?。。。

?

Window.open:


window.open("<%=basePath %>fareHeaders.do","upload","menubar=no,status=no,resizable=no,scrollbars=1,width=600,height=200pt,top=200,left=300");

?

打开的页面:

var parentWin = window.dialogArguments?window.dialogArguments : window.opener;
window.onload = function(){
        var mm = "${MESSAGE}";
        if(null != mm && mm == "Save Ok!"){
            var line = $("fareHeadersBean.marketingAirline").value;
            var refId = $("fareHeadersBean.refId").value;
            var dis = $("fareHeadersBean.distributor").value;
            parentWin.doaddrefId(line,refId,dis);     //调用父页面方法doaddrefId
            window.close(); 
        }
    }

?
子页面点击Save后,request.setAttribute(MyConstants.MESSAGE_KEY, "Save Ok!");再进入子页面后,mm不为空,可传值给父页面。

?

模态窗口:

var returnValue = window.showModalDialog('<%=basePath%>package/fareLevel.jsp',"fareLevel","status:false;dialogWidth:350px;dialogHeight:150px");

?

子页面:

<html>
	<head>
		<base href="<%=basePath%>">
		<title>Fare level</title>
		<script type="text/javascript">
		function doConfirm(){
			var fareLevel = document.getElementById("fareLevel");
			if(fareLevel.value==""){
				alert(" Please input !");
				return false;
			}
			window.returnValue=fareLevel.value;
			window.close();
		}
		</script>

	</head>
	<body style="text-align: center;">
	<div >
		<br>Fare Level:<input type="text" id="fareLevel" />
		<br>
		 <br/>
		<input type="button" onclick="return doConfirm();" style="width: 60" value="OK">
		</div>
	</body>
</html>

?。。。

?

?

?

?

?

  相关解决方案