跨域刷新的可行方案

基本的思路一般有两个:第一种是使用隐藏的iframe策略,它的具体依据是,我不能在当前页面上访问远程域上的脚本来刷新远程域中的页面,但是可以通过一个iframe加载一个远程中的一个页面,比如我可以通过iframe加载像百度,谷哥这样的首页页是没有有问题,这就为程序员提供了一种可能,我可以动态加载一个远程页面,由这个页面发起刷新远程其它页页的逻辑.例如可以在iframe加载的页页中放置如下代码:

<script type="text/javascript">
			try{
				//top.opener.location.reload();
				top.opener.refresh();//局部刷新
			}catch(e){
				//parent.close();
			}
			
			top.close();
		</script>

就可以完成刷新的逻辑,此方案已经亲自测试,是可以完成的,iframe中加载的页面可以访问与自己同域的页面中的脚本方法,以完成刷操作.在这种方案被iframe加载的页面似乎具备双重的身份,本地和远程它都沾了边,事实却并不是如此,在这个加载远程页面中如果想访问本地资源,其实它也会受到同源的策略的影响.

 

第二种方案:其实是使用了跨域的有限访问策略,例如下面的脚本在跨域时调用reload()方法是就问题,因为你不能访问location对象,但是你可以为location赋予一个地址,以达到刷新的目的

try{  
    window.parent.opener.location.reload();  
    window.parent.close();  
}catch(e){  
        //portal为要刷新父页面的地址   
    window.parent.opener.location="远程地址";  
    window.parent.opener=null;  
    window.parent.close();  
}  
网上的其它解决方案
1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
2.<HTML>  
3. <HEAD>  
4.  <TITLE> New Document </TITLE>  
5. </HEAD>  
6. <BODY>  
7.  <SCRIPT LANGUAGE="JavaScript">  
8.  <!--   
9.    window.οnlοad=function(){   
10.        document.getElementById("open").οnclick=functio
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值