`
JavaSam
  • 浏览: 932943 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不跨域的情况下父页面访问iframe内元素和js方法的完整步骤

 
阅读更多

1.首先两个页面在同一域下

 

例:A.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>resize</title>
		<meta name="author" content="Administrator" />
		<!-- Date: 2013-08-30 -->
	</head>
	<body>
		<div>
       	<iframe name="test" src="B.HTML" id="test" frameborder="no" style="margin: 50px 80px 0 90px;width:90%;height: 500px;"></iframe>
       	</div>
	</body>
</html>

 B.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>resize</title>
		<meta name="author" content="Administrator" />
		<!-- Date: 2013-08-30 -->
		<script>
			function resize() {
				var parentwh = parent.innerHeight;
				var parentww = parent.innerWidth;
				var parentscreenh = parent.screen.height;
				var parentscreenw = parent.screen.width;
				var gridDiv = document.getElementById("gridWropper");
				var got = gridDiv.offsetTop
				var winh = window.innerHeight;
				var winw = window.innerWidth
				var w = winh - got;

				var screenX = screenLeft;
				var screenY = screenTop

				var allFrames = parent.frames;
				var currentWin = null;
				for (var i = 0; i < allFrames.length; i++) {
					if (allFrames[i] == window) {
						currentWin = allFrames[i];
					}
				}
			}
		</script>
	</head>
	<body onresize="resize()">
		<div id="gridWropper" style="height:90%;width:100%;overflow:auto;border: 2px dashed black;word-break: break-all;"></div>
	</body>
</html>

 接下来如果要在A中访问B中的方法,首先得先判断B是否加载完成,加载完成后才能访问(这个太重要了)

 

 js

var iframe = document.getElementById("test");
            if (!/*@cc_on!@*/0) { //if not IE
                iframe.onload = function(){
                    alert("Local iframe is now loaded.chrome");
					alert(iframe.contentWindow.resize)
                };
            }
            else {
                iframe.onreadystatechange = function(){
                    if (iframe.readyState == "complete") {
                        alert("Local iframe is now loaded.ie");
                        //alert(iframe.document.getElementById("test"));
						alert(iframe.contentWindow.resize)
                    }
                };
            }

 

分享到:
评论

相关推荐

    iframe 跨域访问session

    iframe 跨域访问session问题解决方法

    iframe跨域调用父窗口js.zip

    实现内嵌的iframe跨域调用父页面js方法

    解决JS跨域访问IFrame的解决方案

    通过HTTPClient界面在JSP中嵌入iframe子界面跨域时,无法获取跨域界面的属性值的问题

    iframe跨域通信解决方法

    该文档介绍了vue和普通web页面中iframe实现跨域的解决方案,解决了主页面中无法调用iframe方法的问题

    iframe跨域常用问题和iframe页面自适应

    这是关于iframe使用过程中出现的问题整理的解决方法,关于使用iframe不用单独写接口打通数据,直接把数据通过ifarme嵌套方法传递过去,使用简单方便。

    iframe与主框架跨域相互访问

    iframe 与主框架相互访问例子,包含同域访问,跨域访问例子。

    关于iframe跨域POST提交的方法示例

    以前在面试的时候经常遇到问关于跨域的事儿,所以自己对跨域有一定的概念性了解,知道什么是跨域以及解决跨域的方法,但是具体实际从来没有操作过,直到最近在公司项目中,遇到了一个需要使iframe跨域进行POST提交的...

    iframe 跨域解决方法

    NULL 博文链接:https://hqlly.iteye.com/blog/1662337

    完美解决iframe跨域问题

    框架完美解决了iframe之间的跨域通讯。底层技术采用window.name转换代理实现

    layer弹窗:top.layer弹窗到父页面跨域解决办法

    layer弹窗:top.layer弹窗到父页面跨域,通过postMessage方法将子页面的配置对象发送到父页面中,父页面再通过子页面的配置对象打开弹窗,对象内不能存在事件。

    iframe跨域访问示例

    iframe跨域访问示例

    跨域修改iframe页面内容详解

    需要将proxy.html放到与内嵌的iframe页同域的服务下, 并且可以被访问到. 使用 支持2种调用方式: 使用 postMessage 和 URL params. postMessage 该方法需要使用 JSON.stringify 将对象转为字符串. // React function...

    html静态页面,实现跨域访问

    请用google浏览器打开,页面百分比缩小到百分之三十再访问。 1、 请在服务器上部署附件war 2、 将【两个工程.zip】压缩包中的webChart.war和jdbc2json.war上传至apache-tomcat-8.0.33/webapps下 3、 启动tomcat,~/...

    iframe自适应宽高

    这个库允许的高度与同跨域iframe来适应他们所...在iframe页面链接修复和支持iFrame与父页面之间的链接。 提供自定义的大小和滚动方法。 使家长地位和视口大小的iframe。 与ViewerJS支持PDF和ODF文档。 后备支持到IE8。

    iframe 跨域 自动适应高度

    iframe 跨域 自动适应高度;iframe 跨域 自动适应高度;

    iframe跨域问题

    iframe跨域问题:Uncaught DOMException Blocked a frame with origin解决方法

    postmessage解决iframe页面跨域

    通过JS技术解决引入iframe页面引起的跨域问题,postmessage解决iframe页面跨域问题

    js跨域解决方案

    js跨域解决方案

    iframe跨域解决方案

    在web开发中,跨域问题是经常遇到的,但是由于浏览器同源策略的限制,不同域之间属性和操作是无法直接交互的。本次讨论iframe和父页面的消息通信。

    js解决跨域访问问题

    js解决跨域访问问题,在用js访问web后台方法的时候,有时候会遇到跨域访问的问题。文档中介绍了跨域访问产生的原因以及相应的解决办法及代码示例。

Global site tag (gtag.js) - Google Analytics