我正在使用node.js + angularJS 1.5.7
当我在外部认证或购买时使用弹出窗口时
ex> mysite =>弹出窗口打开(A)=>身份验证(例如google)=>发布(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为空。
我在IE11临时使用IFrame。但是我想要Popup All浏览器。
请给我任何想法。
谢谢。
答案 0 :(得分:0)