JS的showModalDialog不工作在chrome作为模态

JS showModalDialog not working in chrome as modal

本文关键字:chrome 模态 工作 showModalDialog JS      更新时间:2023-09-26

我在我的应用程序中使用showModalDialog(),让用户查看来自不同来源的文章作为模态弹出。

它在FF和IE中工作得很好,但在chrome中它不表现为模态,我仍然可以在父窗口上单击其中的任何元素。

我想让它像IE和FF一样工作。

我看了一些变通

1)将onfocus事件设置在父窗口上,并再次将子窗口聚焦在它上面。

     <script type="text/javascript">
        setInterval(checkFocus, 10);
        var mywindow;
        function openModal() {
            var a = new Array;
            a[0] = 1;
            a[1] = 4;
            mywindow = window.showModalDialog(myurl,
      a, "dialogwidth: 1000; dialogheight: 700; resizable: yes;center : yes;");
        }
        function checkFocus() {
            if (mywindow != null && mywindow != undefined) {
                if (window.focus) {
                    mywindow.focus();
                }
            }
        }
      </script>

,但这似乎不像预期的那样工作。

2)设置onblur事件在子窗口,再次聚焦自己

这个解决方案我已经从一些在线资源阅读。我可以应用这个解决方案,如果只有子窗口是自定义页面从我的域,但作为我的子窗口可以从任何domain的任何url,这是不适用于我的情况。

我需要让它工作,谁能在这方面给我建议吗?

Chrome在实现上有严重的bug。最重要的是,Chrome显示的窗口不是模态的(见Chromium bug #16045),这意味着,用户可以在处理模态对话框之前与原始窗口进行交互。