今天帮 "阿辉小屋javascriptⅠ"QQ群里卡缪解决了一个javascript 跨域传值的问题.
问题描述:
站点A上一个页面 a.html 的iframe下有一个站点B上的一个页面b.html.想把页面b.html的一个字符串传给页面a.htmlA 的域名为:www.aaa.com B的域名为:www.bbb.net .问题是直接引用会出现没有权限的错误.
解决办法:
第一种:利用windows的剪粘板第二种:在B上生成一个文件
a.html的内容为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>js跨域</title><script language="javascript" defer="defer">... document.getElementById("aaa").style.height=parseInt(window.clipboardData.getData("text"))+ 50 + "px";</script></head><body><iframe id="aaa" src="http://ladder.nyist.net/ladder/chenchun/B.html"></iframe></body></html>b.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>js跨域</title><script language="javascript" defer="defer">... window.clipboardData.setData("text",String(window.document.body.scrollHeight));</script></head><body><table width="600" height="284" border="1" align="center" cellpadding="0" cellspacing="0"> <tr> <td>a</td> <td>a</td> <td>a</td> </tr></table></body></html>原理:
在b.html里面将要传递的值在页面被加载时存进windows的剪粘板,a.html中从剪粘板中读出数据
但这种方法有他的局限性:只对windows 下的IE有用
最后卡缪把要传的值生成一个js文件存在B的服务器上,在a.html里引用该js 文件,原理基本上一样,哈哈~
补冲一下:
今天上课是和同学讨论了这个问题,以上的办法,只限于,对两个服务器都有读写的权限.当对B没有操
作的权限时,的解决办法为.读取b.html处理后直接写到a.html里面(读取的办法有好多,其中有一种是利用SOCKET 另外asp.net 里面还有好几种方法可以做到)