Permission denied异常的解决方法

现象:

定制一个frame分左右2个帧,左侧是树状菜单展示,通过点击实现右侧页面跳转,frame代码如下:

<frameset cols="200,*" frameborder="no" border="0" framespacing="0" >
    <frame src="navigation.bsh" name="menuFrame" scrolling="auto" id="menuFrame" title="menuFrame" />
    <frame src="#" name="contentFrame" id="contentFrame" scrolling="auto" title="contentFrame" />
</frameset>

当contentFrame要访问的url都运行在Butterfly Server上的时候没有问题,一旦访问外网地址后在回跳其他url就会报异常 Permission denied。

问题分析:

1、创建frame后,我们可以认为menuFrame是左侧帧的句柄,而contentFrame是右侧帧的句柄。

 第一次当我们在menuFrame中调用
 parent.contentFrame.window.location

就可以实现contentFrame跳转到任意url,如果我url都在同一域中,contentFrame一直由我们初始化,没有任何问题。一旦url要访问一个外网地址的话,第一次我们初始化了这个contentFrame对象,然后实现跳转,跳转后 contentFrame就会被其他对象初始化,例如跳转到http://www.sohu.com(此步骤不会产生问题)。这之后,contentFrame就不在由我们掌控,而当我们第二次调用parent.contentFrame.window.location的时候,contentFrame的window对象已经指向www.sohu.com, 和menuFrame不在一个域中,浏览器会提示出错“Permission Denied ...”。

解决方法:

在左侧超级链接中要跳转的地址中把contentFrame句柄一直传递,如下:

<a href="www.sohu.com" target="contentFrame">搜狐</a>

这样contentFrame句柄还是一直握在手中,从而解决访问Permission denied异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值