Почему для закрытия родительского окна из iframe нам нужно дважды вызвать window.parent.window.close? - PullRequest
1 голос
/ 07 ноября 2019

Я столкнулся с ситуацией, в которой мне нужно закрыть родительское окно из Iframe. У меня нет доступа к родительскому коду Windows, поэтому мне нужно кодировать в коде iframe. Итак, я обнаружил, что вызов window.parent.window.close дважды может закрыть родительское окно. Но почему это не сработало, позвонив только один раз?

Тело ребенка / Ифрама

<body>
    From children
    <button onclick="myFunction()">Click me</button>

    <p id="demo"></p>

    <script>
        function myFunction() {
            window.parent.window.close();
            window.parent.window.close();
        }
    </script>
</body>

Тело родителей

<body>
    From Parent
    <iframe src="./child.html">

    </iframe>
</body>

1 Ответ

0 голосов
/ 08 ноября 2019

Начиная с последней спецификации. Скрипты могут закрывать только те окна, которые ими открыты. (т. е. если вы открыли окно через window.open, то только вы можете закрыть его). Или если у целевого окна, которое нужно закрыть, есть только 1 документ в контексте истории (т. е. history == 1)

Окно вызова. закрытие дважды похоже на ошибку Chrome. Попробуйте использовать Firefox. См .: https://developer.mozilla.org/en-US/docs/Web/API/Window/close

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