当前位置: 代码迷 >> Web前端 >> Permission denied错误的解决办法
  详细解决方案

Permission denied错误的解决办法

热度:455   发布时间:2012-10-13 11:38:17.0
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异常。

  相关解决方案