IE11 window.opener null после посещения другого сайта - PullRequest
0 голосов
/ 24 января 2019

Я использую node.js + angularJS 1.5.7

, когда использую всплывающее окно при внешней аутентификации или покупке

ex> mysite => popup open (A) => Auth (например google) => post (A) => window.opener.postMessage

Сценарий, подобный этому.

        /* request code */
        var child = null;
        child = window.open('', pop_title, opt);
        child.location = url;
        child.focus();
        var frmData = document.payForm;
        frmData.target = pop_title;
        frmData.action = url;
        frmData.submit();

        var leftDomain = false;
        var interval = setInterval(function () {
            try {
                if (child.document.domain === document.domain) {
                    if (leftDomain && child.document.readyState === "complete") {
                        clearInterval(interval);
                        child.postMessage({message: "requestResult"}, "*");
                    }
                } else {
                    leftDomain = true;
                }
            } catch (e) {
                // we're here when the child window has been navigated away or closed
                if (child.closed) {
                    clearInterval(interval);
                    return;
                }
                // navigated to another domain
                leftDomain = true;
            }
        }, 500);

        /* child page */
        document.domain = "mysite.com"
        targetWindow = window.opener;
        targetWindow.postMessage({ message: "deliverResult", result: "succ" , msg: "¿¿¿ ¿¿ ¿¿¿ ¿¿¿¿¿¿¿.", tid: "<?=$_POST["Tradeid"]?>"}, "*");

этот код работает в Edge или Chrome.Но IE11 не работает.

Я попробовал другой способ

        localStorage.setItem("orgWindow",window);
        localStorage.getItem("orgWindow");

Но это тоже не работает.Окно найдено.Но Opener имеет значение null.

Я использую IFrame, когда IE11 временный.Но мне нужен браузер Popup All.

Пожалуйста, дайте мне любую идею, пожалуйста.

Спасибо.

1 Ответ

0 голосов
/ 25 января 2019

Если вы посмотрите документацию для Window.Opener, вы заметите, что совместимость для IE неизвестна.

Ссылка: Window.opener

Это может быть возможной причиной того, почему он не работает должным образом в IE.Вы можете попробовать использовать альтернативный подход, как в ссылке ниже.

альтернативы window.opener

...