window.opener在firefox中为null

时间:2012-03-28 07:06:17

标签: javascript firefox

我有一个打开弹出窗口的页面

openWindow(top, 'prcsTypeSelectionPopup?event=prcsTypeSelection', 'lovWindow', {width:750, height:550}, true, 'dialog', pathCallBack);

并且弹出窗口具有以下代码

function returnSelect()
{
    window.document.forms[0].choice_processType.value ;
    window.opener.document.forms[0].pevent.value = 'getprocessName';
    window.opener.document.forms[0].processName.value='';
    for (var i=0; i < document.forms[0].elements.length; i++)
   {
   if (document.forms[0].elements[i].checked)
      {
      window.opener.document.forms[0].processName.value=document.forms[0].elements[i].value;
      break;
      }
   }
   if(window.opener.document.forms[0].processName.value=='')    {
        window.opener.document.forms[0].lovProcessType.value = '';
        window.opener.document.forms[0].pevent.value = '';
   }
    window.opener.document.forms[0].submit();
    closeConn();
}

function closeConn()
{
         self.close();
}

但是当页面在firefox中加载时,我得到错误 window.opener在returnselect()函数的第二行为空

function returnSelect()
    {
        window.document.forms[0].choice_processType.value ;
        --> window.opener.document.forms[0].pevent.value = 'getprocessName';

任何想法如何克服这个

提前致谢...

3 个答案:

答案 0 :(得分:6)

您从另一个域/子域打开一个窗口。在这种情况下,您无权访问打开目标窗口的父窗口,因为安全权限不允许这样做。

例如,如果您从 site1.com 的页面打开 site2.com 页面,则目标窗口的开启者 null

如果您从 site1.site.com 的页面打开 site2.site.com 页面,则也无法访问,因为这是两个不同的网站。

但是,如果您是 site.com 页面中的 site.com 页面或 subdomain.site.com 页面的页面 site.com 您具有访问权限,因为安全权限允许。

注意:也许'prcsTypeSelectionPopup?event = prcsTypeSelection'不正确。将其更改为没有域的根正确路径,例如:

/ prcsTypeSelectionPopup?事件= prcsTypeSelection

答案 1 :(得分:3)

它仅适用于“parent.window.opener”而不适用于“window.opener”

感谢Sergzach的时间

答案 2 :(得分:0)

尝试禁用下一个Firefox扩展程序: 选项卡浏览器扩展(THE)。使用它时似乎存在上述问题。