Home  >  Article  >  Web Front-end  >  The perfect solution for the child window to close when the js parent window is closed_javascript skills

The perfect solution for the child window to close when the js parent window is closed_javascript skills

WBOY
WBOYOriginal
2016-05-16 16:50:391318browse

Recently, I encountered a permission management system. Since the permission management system is inconsistent with the original system style, a new window will be opened. The problem arises. After the admin logs out, the permission management window is not closed. After other ordinary users log in, they can still operate the permission management window.

Simplified problem: When the admin logs out, or when main.html is closed, all new windows that are opened are closed together. The problem is solved

Just look at the code:

Copy the code The code is as follows:


< html>


Insert title here< /title> <br></head> <br><body onUnload="closeNews();"> <br><br><a href="#" onclick="openNew('http:/ /www.baidu.com','nihao')">Open new window</a> <br><a href="#" onclick="logOut();">Log out</a> ; <BR></body> <br></html> <br><br><script> <br>//User records all open child windows<br>var win_Array = new Array(); <br>var win_num = -1; <br><br>//Record every time a new window is opened <br>function openNew(uri,param){ <br>win_num = win_num 1; <br>win_Array[ win_num] = window.open(uri); <br>} <br><br>//When the user logs out, execute the shutdown method. Body adds onUnload = "closeNews();" When the main window is closed, all child windows are closed <br>function closeNews(){ <br>//Close permission management <br>if(win_Array.length > 0){ <br>for(var i = 0;i <= win_Array.length;i ){ <BR>var win_one = win_Array[i]; <BR>if(win_one != undefined){ <BR>win_one.close( ); <BR>} <BR>} <BR>} <BR>} <br><br>function logOut(){ <BR>//Close the child window <BR>closeNews(); <br><br> //Log out<BR>} <br><br></script> <br> </div> <br>Explain: <br><br><body onUnload="closeNews();"> It is important to add the onUnload event on the body. That is: when the window is closed, execute the method of closing all child windows. <br><br>Test: In the web project, there is no problem with ie8, ie10, Firefox, chrome, and opera. <br><br>Once the main.html page is not placed in the wen container but is static, IE has a problem, because when it is static, IE's window.open() actually opens a new page, not a new tab. . All methods of closing the window no longer work. <br><br>Time is limited and I haven’t spent the energy to study it in detail. I hope a js technology expert who knows why can give some guidance. Thanks again.</div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Statement:</span><div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div></div></div><div class="nphpSytBox"><span>Previous article:<a class="dBlack" title="Basic optimization ideas for window resize and scroll events_javascript skills" href="http://m.php.cn/faq/13201.html">Basic optimization ideas for window resize and scroll events_javascript skills</a></span><span>Next article:<a class="dBlack" title="Basic optimization ideas for window resize and scroll events_javascript skills" href="http://m.php.cn/faq/13203.html">Basic optimization ideas for window resize and scroll events_javascript skills</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Related articles</h2><em><a href="http://m.php.cn/article.html" class="bBlack"><i>See more</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/faq/1609.html" title="An in-depth analysis of the Bootstrap list group component" class="aBlack">An in-depth analysis of the Bootstrap list group component</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/1640.html" title="Detailed explanation of JavaScript function currying" class="aBlack">Detailed explanation of JavaScript function currying</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/1949.html" title="Complete example of JS password generation and strength detection (with demo source code download)" class="aBlack">Complete example of JS password generation and strength detection (with demo source code download)</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/2248.html" title="Angularjs integrates WeChat UI (weui)" class="aBlack">Angularjs integrates WeChat UI (weui)</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/faq/2351.html" title="How to quickly switch between Traditional Chinese and Simplified Chinese with JavaScript and the trick for websites to support switching between Simplified and Traditional Chinese_javascript skills" class="aBlack">How to quickly switch between Traditional Chinese and Simplified Chinese with JavaScript and the trick for websites to support switching between Simplified and Traditional Chinese_javascript skills</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Public welfare online PHP training,Help PHP learners grow quickly!</p></div><div class="footermid"><a href="http://m.php.cn/about/us.html">About us</a><a href="http://m.php.cn/about/disclaimer.html">Disclaimer</a><a href="http://m.php.cn/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>