Send a refresh request to another page opened in the browser

匿名 (未验证) 提交于 2019-12-03 01:08:02

问题:

I have page A that creates a window with the page B.

Page B asks the user some datas, inserts them in the database and then closes itself. After the insertion, I'm trying to make page A refresh automatically (it can be both from A seeing that B has closed, or by a function triggered by B itself before (or after?) closing)

How can I do that?

回答1:

JavaScript's window.open() returns reference to the instance of opened window. You may use it to set up onunload event handler, like this:

var hWndB = window.open('somepage.php'),     hWndA = window.self;  hWndB.onunload = function(){ hWndA.location.reload(); } 


回答2:

You can use the onunload event and window.opener. For example.

window.addEventListener('unload', function() {    window.opener.location.reload(); }, false); 

Or you could use jquery so you wouldn't have any crossbrowser compatibility problems:

$(window).on('unload', function() {    window.opener.location.reload(); }); 

Also there is another event called onbeforeunload that you might want to take a look at.

EDIT

For older browser you can use the hack that @CORRUPT has provided in the comments: window.open() returns undefined or null on 2nd call



回答3:

Variant "A seeing B closed":

//winb is global variable winb=window.open(blah blah); //Existing: A opens B  window.setTimeout(checkWinB,1000);  function checkWinB() {   if (winb.closed()) refreshMySelf();   else window.setTimeout(checkWinB,1000); } 

Variant "B kicks A":

opener.rerfreshMySelf(); window.close() //Existing: B closes 

Both variants need the refreshMySelf() function to refresh the page. How to do this depends on the page mechanism, but a starting point for a non-AJAX page is

function refreshMySelf() {   location.reload(); } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!