Я использую 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.
Пожалуйста, дайте мне любую идею, пожалуйста.
Спасибо.