рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЛрдбрд▓ рдЖрдЗрдлреНрд░реЗрдо рдХреНрд░рдЪ


"рдирд╣реАрдВ, рдореИрдВ рдЦреБрдж"
рдЗрдЯрд╛рд▓рд┐рдпрди рд▓рдВрдЧрдбрд╝рд╛

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ: рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдиреЗ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧрдгрдирд╛, рдПрдХ рдкреНрд▓реЗрдЯ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХреНрд╖реИрддрд┐рдЬ рдЧрддрд┐рд╢реАрд▓ рдмреИрдирд░ рдХреЛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрдбрд╝реЗ рдЪрд┐рддреНрд░ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдореВрд▓ рдмреИрдирд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдКрдВрдЪрд╛рдИ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред

рдЙрдиреНрд╣реЛрдВрдиреЗ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рд╕рд╛рдЭреЗрджрд╛рд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╛рдЭреЗрджрд╛рд░, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рд╣реЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рдд, рд╡реЗ jQuery рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдП рдереЗред рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдирдВрдЧреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдЗрдлреНрд░реЗрдо рд╣реИ ред



рддрд╕реНрд╡реАрд░реЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдирд░:



рдкреЙрдкрдЕрдк рд╡рд┐рдВрдбреЛ рдордВрдЧрд▓рд╛рдЪрд░рдг рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз:



ASP.NET MVC рдмреИрдХрдПрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣реИ, рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЪрд┐рддреНрд░, рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдЯреЗрдмрд▓ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд░реЗрдбрдордВрдб рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рджреГрд╢реНрдпрдкрдЯрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдИ рднреА рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдЬреЛ рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ рдереА, рдЙрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕рд┐рд░реНрдл рдПрдХ рдЫреБрдЯреНрдЯреА рд╣реИред

рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╕реНрдпрд╛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдКрдВрдЪрд╛рдИ рдореЗрдВ рдПрдХ рдЖрдЗрдлреНрд░реЗрдо рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рд╕реЗ рдкреЙрдк-рдЕрдк рд╣реИред рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдЖрдк рдореВрд▓ рдЖрдЗрдлреНрд░реЗрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЛрдбрд▓ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдИрдлреНрд░реЗрдо рдбреЛрдореЗрди рдЕрд▓рдЧ рд╣реИ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╣ рдХреЛрд░реНрд╕ рд╣реИ ред рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдПрдХ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рдордЬреЗрджрд╛рд░ рдФрд░ рд╕реМрд╣рд╛рд░реНрджрдкреВрд░реНрдг рд╕рддреНрддрд╛рд░реВрдврд╝ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕рдВрдмрджреНрдз рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдирд╣реАрдВ рдЫреВ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдорд╛рд░реЗ рдЖрдЗрдлреНрд░реЗрдо рдХреЛ рдЫреВ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд░реНрдгрдп


рдХреНрд░рдЪ: рдЦреБрд▓реЗ рд╣реБрдП рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдиреАрдЪреЗ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, iframe рдХреА рдКрдБрдЪрд╛рдИ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдореЛрдбрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реЛ рдЬрд╛рдПред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


HTML5 API window.postMessage рдкрд░ ред рдХрдИ jQuery рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЖрдХрд╛рд░ ifram рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдореЗрдВ рд╕рд╛рдЭреЗрджрд╛рд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рддрд░рдл рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рджреВрд╕рд░реЗ, рдЗрд╕ рдХрд╛рд░реНрдп рдХреА рдмрд╣реБрдд рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рддреАрд╕рд░рд╛, рдЬрдм рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдореЛрдбрд▓ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред

рд╣рдорд╛рд░реЗ iframe рдХрд╛ HTML
<div class="container" id="mainContent"> <div class="row"><h1>Some iframe</h1></div> тАж <a href="#" class="btn btn-default" id="openBtn">Open modal</a> </div> <!-- Modal --> <div id="myModal" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog"> <div class="modal-content" id="myModalContent"> тАж </div> </div> </div> 

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ iframe'a onLoad
 // Modal  $('#openBtn').click(function () { $('#myModal').modal({ show: true }) }); //  Modal      Modal  $('#myModal').on('shown.bs.modal', function (e) { /* *   ,              */ parent.postMessage($("#myModalContent").height(), "*"); }); //  Modal       Modal  $('#myModal').on('hidden.bs.modal', function (e) { parent.postMessage($("#mainContent").height() + 1, "*"); }); //   iframe (+1 тАУ  ) parent.postMessage($("#mainContent").height() + 1, "*"); 


Bootply рдкрд░ iframe рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб

рдкрд╛рд░реНрдЯрдирд░ рд╕рд╛рдЗрдб HTML
 <iframe id="myIframe" src="http://bootply.com/render/112265" width="100%" scrolling="no"></iframe> 


рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╣рд╛рдВ рдХреЙрдорд░реЗрдб рдиреЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдпрд╛
 var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; eventer(messageEvent, function (e) { //    if (e.origin !== "http://www.bootply.com") retrurn; // resize document.getElementById('myIframe').style.height = e.data + 'px'; }, false); 


рдкреВрд░реНрдг Jsfiddle рд╕рд╛рдереА рдХреЛрдб

Jsfiddle рдкрд░, Bootply рд╕реЗ рдПрдХ iframe рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Bootply рдПрдХ рдЕрдиреНрдп iframe рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЖрдХреГрддрд┐ рджреЗрдЦреЗрдВ)ред

рд╕рд╛рдорд╛рдиреНрдп рдЖрдХрд╛рд░ рдЬреЛрдбрд╝рдирд╛ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ:
 $(window).resize(function () { //     Modal if ($('#myModal').hasClass('in') == false) parent.postMessage($("#mainContent").height() + 1, "*"); }); 


рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдкрд░рд┐рдгрд╛рдо , рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рдЬрд░реВрд░рдд рд╣реИ
рджреВрд░ рд╕реЗ рдЖрдЗрдлреНрд░реЗрдо рдмреВрдЯ рдХрд░реЗрдВред



рдирд┐рд╖реНрдХрд░реНрд╖



рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдиреЗ рд╣рдореЗрдВ рд▓рд╛рдЗрд╡ рд╡реНрдпрд╛рдкрд╛рд░ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмреИрд╕рд╛рдЦреА рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рдорд╣рд╛рд╕рдВрдШ рд╕рдВрднрд╡рддрдГ рд╡рд┐рддреНрддреАрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рдВрдЪрдп рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░реЗрдЧрд╛ред

Source: https://habr.com/ru/post/In212347/


All Articles