window.opener替代品

dma*_*may 19 javascript window.opener

我正在打开一个模态弹出窗口.然后我使用访问父窗口文本框和其他属性window.opener.它在Firefox中运行良好,但在IE8中运行不正常.它给出了错误'window.opener is null'.如何访问在两个浏览器中都有效的子窗口中的父窗口属性.

小智 10

有两种方法可以解决问题:注意:如果使用" showModalDialog ",则IE不支持" window.opener " .

1)使用" window.open " 代替" window.showModalDialog "

2)如果要使用" window.showModalDialog ",请执行以下操作:

<script language="javascript" type="text/javascript">
    function YourFunction()
    {
        var opener = null;

        if (window.dialogArguments) // Internet Explorer supports window.dialogArguments
        { 
            opener = window.dialogArguments;
        } 
        else // Firefox, Safari, Google Chrome and Opera supports window.opener
        {        
            if (window.opener) 
            {
                opener = window.opener;
            }
        }       
        // write you code and refer "opener"
        window.close();
    }
</script>
Run Code Online (Sandbox Code Playgroud)


Kai*_*eks 7

您可以将参数传递给showModalDialog函数.只需将window对象作为参数传递即可.

window.showModalDialog(theURL, window);
Run Code Online (Sandbox Code Playgroud)

Yo可以使用dialogArguments从模态窗口访问参数.请参阅:http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx

var openerWindow = window.dialogArguments;
Run Code Online (Sandbox Code Playgroud)

  • chromeModalDialog已被Chrome 35(2014年7月)弃用.请参阅http://blog.chromium.org/2014/07/disabling-showmodaldialog.html和http://blog.chromium.org/2014/04/chrome-35-beta-more-developer-control.html (3认同)