1

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在子窗口上设置事件,再次聚焦自己

我从一些在线资源中阅读了这个解决方案。如果仅从我的域中自定义子窗口,我可以应用此解决方案,但由于我的子窗口可以是任何url来自任何的子窗口domain,因此不适用于我的情况。

我需要让它工作,有人可以建议我吗?

4

1 回答 1

3

Chrome 的实现存在严重的错误。最重要的是,Chrome 显示的窗口不是模态的(请参阅Chromium 错误 #16045),这意味着用户能够在处理模态对话框之前与原始窗口进行交互。

于 2013-01-18T12:47:15.057 回答