最近遇到一个很头疼的问题,不知道怎么解决,请各位高手帮忙看下:a.jsp中:
       window.open("/integration/publish/b.jsp?orgID=" + id ,"b页面");b.jsp中的js有如下代码:
      alert(window.opener);  能弹出window对象
      alert(window.opener.document);  这里就开始报错了:拒绝访问!之前使用的挺好的,现在就不行了.

解决方案 »

  1.   

    没有跨域通过window.showModalDialog()可以获取返回值,但是在/integration/publish/b.jsp里面需要有一个重定位(window.localtion),通过showModalDialog()方法打开的对话不能重定位,现在不知道怎么解决了。
      

  2.   

    应该是可以的,是不是你的代码中设置了
    opener=""之类的代码了?
      

  3.   

    没有设置,直接是window.opener.document前段时间是好用的,这段代码请公司的老程序员看,都说没有问题现在想了一个笨方法,使用了两次showModalDialog(),第二次使用把值传到第一个对话框上,然后通过第一个对话框将返回值传给父窗口.流程:父窗口:a.jsp(第一次使用showModalDialog("b.jsp"))   --->  b.jsp(第二次使用showModalDialog("c.jsp"))   --->  c.jsp,b.jsp与c.jsp的页面基本上是一样的。
    大家若有好的方法分享一下!!!
      

  4.   

    没有设置?
    那应该是你的使用方法有问题的。
    window.opener.document是绝对可以使用的。
      

  5.   

    注意的问题:
    你访问window.opener.document,应该是在子窗口没有提交数据的情况下,首次加载的时候使用的。
    如果你要多次提交之后再使用,根据不同的浏览器,你需要采用下面的方法进行浏览器的兼容window.open("/f.jsp?orgID=" + id ,"b页面");f.jsp是一个帧页面
    <frameset cols="0,*">
    <frame src="">
    <framse src="/integration/publish/b.jsp?orgID=<%=request.getParameter("orgID")%>">
    </frameset>b.jsp使用window.parent.opener.document进行访问
      

  6.   

    没有使用到frameset,如果是方法有问题的话,那么用showModalDialog()进行传值应该也会出错。
    采用的是Turbine框架,在.xreg文件中加载了一个.vm文件,在.vm文件中写的open方法打开的jsp不知道是不是跟这有关?
      

  7.   

    跟服务器没关系,这是客户端的行为,你要理解b/s程序的机制。
    showModalDialog()是不存在opener属性的,要是showModalDialog()你还是采用opener.document,那说明你真的是搞错了
      

  8.   


    使用showModalDialog()肯定没有用opener.document了,用了returnValue
      

  9.   

    showModalDialog()可以传参数的,在弹出页中通过 window.dialogArguments来访问。showModalDialog(url, window); 这样调用就行了
      

  10.   

    window.open也是可以的。
    你一定是提交了页面之后执行的