我现在有个页面,其中的一个函数需要取一个值,这个值可以从父页面传过来,也可以从本身页面获得我之前一直用window.opener来从父页面取值,但是当这个页面是直接从浏览器输入地址打开的,那么函数中执行到利用window.opener取值这一语句的时候好像就会出错,有什么方法可以判断出来当前页面是直接被打开的还是从父窗口打开的?

解决方案 »

  1.   

    父页面为:<script>
     window.open("b.htm?a=1");
    </script>子页面为:
      <script>
     if(window.location.search!="")
     {
     alert("我是父页面打开的");
     }
     else
     {
     alert("我是自己打开的");
     }
    </script>
    我是B这是最原始的判断方法了。我想这个方法肯定不太好。一定还有更完美的!
      

  2.   


    if(window.opener)
    {
      alert('我是通过window.open打开的')
    }
    else if(window.parent)
    {
      alert('我是通过iframe加载的')
    }
    else
    {
      alert('我就是顶级页面')
    }
      

  3.   

    window.open()的子窗体好象才有window.opener的.
    可以用document来获取,也可以直接传递对象过去.
      

  4.   

    <script type="text/javascript">
    <!--
    if(window.opener)
    {
      alert('我是父窗口通过window.open打开的')
    }
    else if(window.parent!=window)
    {
      alert('我是通过父窗口通过frame加载的')
    }
    else
    {
      alert('我是浏览器直接输入地址打开的')
    }
    //-->
    </script>