frame、iframe跨域传递或修改数据方法

本文示例基础,使用frameset、frame分割窗体,下面代码是典型的网站后台模式,顶部为bannner栏,下面左右分割两部分,当然也可以使用Javascript结合table标签等实现同样功能。

 代码如下 复制代码

<frameset>
    <frame name="banner" src="banner.php">
    <frameset cols="150,*">
        <frame name="left" target="right" src="left.php">
        <frame name="right" src="right.php">
    </frameset>
    <noframes>
    <body>
    <p>不支持框架</p>
    </body>
    </noframes>
</frameset>

一、为FRAME跨域赋值
通过top并使用getElementsByTagName实现跨FRAME提交数据,方法如下:

比如right.php内容如下,通过Javascript修改banner文档中的值。

 代码如下 复制代码

<script type="text/javascript">
try{window.top.banner.document.getElementsByTagName('div')[0].innerHTML='我是标题';}
catch(e){}
</script>

二、跨域修改表单等元素
可以使用类似这样的JS脚本:

 代码如下 复制代码
1 var obj=parent.otherFrameName.document.forms[0].xxx;

来获取表单控件对象,然后进行赋值即可。

三、通过GET方法跨FRAME提交数据
修改frame的src属性,然后把需要传递的值通过GET方法传递。不过要求数据接收方添加相应的接收处理脚本。通过GET方法一般可以实现一些简单的数据传递,如果要实现动态跨FRAME修改页面元素还是有些复杂,不如上面的方法要简单点。

 代码如下 复制代码

<script type="text/javascript">
try{window.top.banner.src='banner.php?title=我才是标题';}
catch(e){}
</script>

四、使用cookie或SESSION跨域传递数据
通过A域设置COOKIE值或SESSION值,然后动态通过JS脚本跨域刷新页面,再次读取COOKIE或SESSION,来达到传递数据目的,不过如果frame源地址是第三方地址,使用COOKIE,可能会因为浏览器的阻止导致失效。似乎还可以通过发送设置P3P头达到规避效果,不过暂时没有验证过。

五、内嵌框架iframe的数据传递
iframe传递数据相对要简单一些,毕竟还都在同一个文档中,直接使用parent来获取父容器,代码如下。

 代码如下 复制代码

<div id="abc">
<div id="Content">http://www.111cn.net</div>
<iframe id="iframe1" src="test.html" ></iframe>
</div>
//test.html
<script type="text/javascript">
function change(){
parent.document.getElementById("Content").innerHTML = "天缘博客";
}
</script>
<input type="button" id="buttion1" onclick="change();">

iframe中跨域传递COOKIE

直接讲解决方案.

PHP的程序

可以直接在B网站中写入

 代码如下 复制代码
<?php
header(‘P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"’)
?>

这样就能接受第三方的Cookie啦。

lighttpd的服务器

 代码如下 复制代码

server.modules    = ("mod_setenv")

setenv.add-response-header = ( "P3P" => "CP=’CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR’")

apache的服务器

 代码如下 复制代码

<VirtualHost>

Header set P3P ‘CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"’

</VirtualHost>

IIS的服务器
增加一个网站http头来解决问题;
管理工具——〉选择一个网站——〉属性——〉http头,增加一个http头
然后输入头名:P3P
输入头内容:CP=CAO PSA OUR

时间: 2024-10-26 06:52:08

frame、iframe跨域传递或修改数据方法的相关文章

HTML5 window/iframe跨域传递消息 API介绍

window.postMessage允许多个 window/frame之间跨域传递数据和信息.下面为大家介绍下window.postMessage的工作原理,以及如何在FireFox,IE8+,Opera,Safari和Chrome中使用它   原文地址:HTML5′s window.postMessage API 在线示例:Using HTML5's window.postMessage(请打开控制台看日志) 我写了一个 MooTools 的插件"PostMessager"来封装wi

PHP:IE下的iframe跨域导致session丢失问题解决方法

今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况). 很明显,session无法被保存.但是直接在地址栏打开那个登录页面,一切都正常啊.真是奇怪啊. 在网上搜索了一下.发现这个问题还真有不少人提及到.最后的解决方法是在那个登录页面里加上以下代码: 代码如下: <span style="font-family:Microsoft YaHei; font-size:14px">header('P3P: CP="ALL ADM

PHP关于IE下的iframe跨域导致session丢失问题解决方法_php技巧

今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况). 很明显,session无法被保存.但是直接在地址栏打开那个登录页面,一切都正常啊.真是奇怪啊. 在网上搜索了一下.发现这个问题还真有不少人提及到.最后的解决方法是在那个登录页面里加上以下代码: 复制代码 代码如下: <span style="font-family:Microsoft YaHei; font-size:14px">header('P3P: CP="AL

文件上传,iframe跨域数据提交的实现_javascript技巧

1.文件上传,图片上传,第三方uploadify插件,http://www.uploadify.com/about/ 2.用iframe上传文件,提交表单,主要思路就是:  a.js创建form表单,iframe,添加到body里,form的target要和iframe的name一致.  b.form表单里更新数据,submit提交  c.如果上传文件,图片,form里面添加 input-file 元素,绑定onchange事件,js触发,在onchange里面添加submit事件  d.关于回

浏览器跨域获取Lrc歌词数据的解决办法

解决|浏览器|数据 获取同一个域的数据,可以通过XMLHTTP组件或IFRAME来实现,不存在跨域访问的权限问题,因此比较简单.     但如果要访问不同域的数据时,由于浏览器的安全设置,XMLHTTP没有权限获取数据,而IFRAME没有权限将获取的数据传递给父窗口,似乎没有其它解决办法.     顿悟--     网页内引用不同域的脚本并不会提示权限不足,对了,就是它没错!     解决方法找到了,现在来简单测试一下:     首先在51js.com服务器上新建一页面(Test.html).

javascript iframe跨域详解_javascript技巧

1.什么引起了ajax跨域不能的问题 ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告. 2.有什么完美的解决方案么? 没有.解决方案有不少,但是只能是根据自己的实际情况来选择. 具体情况有: 一.本域和子域的相互访问: www.aa.com和book.aa.com 二.本域和其他域的相互访问: www.aa.com和www.bb.com 用 iframe 三.本域和其他域的相互访问: www.aa.com和w

javascript中IFrame跨域高度自适应实现代码

同域时Iframe高度自适应 下面的代码兼容IE/Firefox浏览器,控制id为"iframeid"的iframe的高度,通过JavaScript取得被嵌套页面最终高度,然后在主页面进行设置来实现. 另外,请注意此解决方案仅供同域名下使用.  代码如下 复制代码     <script type="text/javascript">       function SetCwinHeight(){         var iframeid=documen

Javascript中实现iframe跨域通信的例子

众所周知,由于前端javascript对跨域访问做了安全限制,javascript只能访问与包含它的文档在同一域下的内容.而实际编码时我们会遇到使用iframe跨域访问.Ajax跨域通信等操作,这个时候如何突破跨域操作的问题,本文将结合实例讲述解决方案. iframe不同子域通信 在同一主域不同子域如何进行Javascript调用?这个问题好解决,例如现有主域111cn.net和子域abc.111cn.net,在111cn.net有一个页面嵌入iframe的指向了abc.111cn.net下的某

iframe跨域通信封装详解_jquery

iframe跨域通信 查看演示        源码下载 众所周知,由于前端javascript对跨域访问做了安全限制,javascript只能访问与包含它的文档在同一域下的内容. 用法举例: 需求是在http://www.demo.org/top.html中通过iframe方式嵌入http://www.iframe.com/iframe.html,而在iframe页面中希望通过点击一个按钮,调用top页面的一个js方法. 1. 在top页面中建立方法供内部页面使用 复制代码 代码如下: func