Some browsers updated their security policies and your issue might be due to stricter security policies that were implemented to prevent this kind of direct interaction between windows that are opened from different origins.
To ensure cross-browser compatibility, I would use the 'window.postMessage()' method as this method exchange messages between windows, even across different origins.
In the parent page, I will add the following to use window.postMessage() -
function receiveMessageFromChild(event) {
if (event.origin !== window.location.origin) {
return;
}
if (event.data === "reloadParent") {
window.location.reload(true);
}
}
window.addEventListener("message", receiveMessageFromChild, false);
function openChildPage() {
var childPage = window.open("child.html");
childPage.postMessage("activateParent", window.location.origin);
}
and in the child page -
function receiveMessageFromParent(event) {
if (event.origin !== window.location.origin) {
return;
}
if (event.data === "activateParent") {
window.opener.postMessage("reloadParent", window.location.origin);
}
}
window.addEventListener("message", receiveMessageFromParent, false);
You can read more on this method at
Window: postMessage() method[
^]