Дочерний элемент window.open не вызывает функцию в родительском окне - PullRequest
1 голос
/ 14 апреля 2011

parent.html

<html>
    <head>
        <script type="text/javascript">
            function openWin()
            {
                myWindow=window.open('child.html','','width=200,height=100');
            }
            function callback(){
                alert("test");
            }
        </script>
    </head>
    <body>
        <input type="button" value="Open 'myWindow'" onclick="openWin()" />
    </body>
</html>

child.html

<html>
    <head>
       <script type="text/javascript">
          window.opener.callback();
       </script>
    </head>
    <body>
    </body>
</html>

И проблема в том, что дочерняя страница вызывает функцию обратного вызова родительской страницы в FF, IE, но не в Chrome.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

Возможно, проблема в том, как chrome запускает JavaScript.Иногда Chrome запускает JS так быстро и рано, и даже DOM не готов к манипуляциям.Попробуйте это в файле child.html

<script type="text/javascript">
setTimeout(function(){window.opener.callback();}, 100);
</script>

Я не уверен, что это именно та проблема, с которой вы столкнулись, я столкнулся с этой проблемой при помощи jQuery.ready () в chrome.

0 голосов
/ 15 апреля 2011

Проблема возникает из-за ошибки безопасности Chrome. Домены, протоколы и порты должны совпадать. Но это также происходит, когда страница открыта из локальной файловой системы.

Откройте страницу с сервера, она должна быть без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...