javascript鍚屾簮绛栫暐锛屽疄鐜癷frame绐楀彛楂樺益鑷€傚簲
javascript鍚屾簮绛栫暐锛屽疄鐜癷frame绐楀彛楂樺害鑷€傚簲
聽
domainA 涓湁涓€涓〉闈ndex.html锛岄€氳繃iframe宓屽浜哾omainB涓殑涓€涓〉闈ther.html
鐢变簬other.html椤甸潰鍦╥frame涓樉绀猴紝鑰屼笖鍏堕〉闈㈠唴瀹逛細鍔ㄦ€佺殑澧炲姞鎴栧噺灏戯紝鐜板湪闇€瑕佸幓鎺塱frame鐨勬粴鍔ㄦ潯
鐢变簬javascript鍚屾簮绛栫暐鐨勯檺鍒讹紝鏃犳硶杩涜璺ㄥ煙鎿嶄綔锛屼娇寰楅棶棰樻瘮杈冩鎵 /span>
鍙傝€冧簡涓€涓嬬綉涓婄殑鍋氭硶锛屽紩鍏ヤ簡涓€涓唬鐞嗛〉闈紝鎴栬€呭彨鍋氫腑浠 agent.html锛屽睘浜巇omainA
鐒跺悗锛屽湪domainB 涓殑other.html涓紝鍐嶄娇鐢╥frame灏哸gent.html杩涜宓屽
聽
濂戒簡锛岀幇鍦ㄦ儏鍐垫槸杩欐牱鐨勶細
index.html 浣跨敤iframe 宓屽 other.html
other.html 浣跨敤iframe 宓屽 agent.html
涔嬫墍浠ヨ寮曞叆绗 涓〉闈gent.html锛屽氨鏄负浜嗛伒瀹堚€滃悓婧愮瓥鐣モ€濈殑瑙勫垯锛屽畬鎴愪笉鍚宒omain涓嬪弬鏁扮殑浼犻€掞紒聽
聽
鎴戜滑鏈€缁堢殑鐩殑鏄鍘绘帀婊氬姩鏉★紝鍙堣淇濊瘉琚祵鍏ョ殑椤甸潰鍐呭鍏ㄩ儴寰楀埌鏄剧ず
1.鍙栧緱other.html椤甸潰鐨勫疄闄呴珮搴eight
2.灏唄eight璁剧疆鍒板叾宓屽叆鐨刬frame鐨剆rc灞炴€т笂
3.鍦╝gent.html涓埅鍙栧嚭鎵€灞瀒frame鐨剆rc灞炴€т腑鐨刪eight鍊 /span>
聽
涓嬮潰鐨勪緥瀛愪腑锛屼娇鐢ㄤ簡涓€涓妧宸э紝閬垮厤浜嗕娇鐢╯etInterval()涓嶆柇鍘昏缃甶frame鐨勯珮搴 /span>
鍋氭硶鏄湪iframe鐨剆rc涓婏紝闄勫姞涓€涓椂闂存埑锛岃娴忚鍣ㄦ瘡娆¢兘閲嶆柊鍔犺浇agent.html
杩涜€岃agent.hml涓殑js鍑芥暟invokeMethodInTopWindow()寰楀埌鎵ц
聽
domainA 涓殑2涓猦tml
index.html
#{extends 'main.html' /} #{set title:'Home' /} <hr> <div >绐楀彛鑷€傚簲---缁曞紑鍚屾簮绛栫暐鐨勯檺鍒讹紝鍚屾椂鍙堝埄鐢ㄥ悓婧愮瓥鐣ワ紝鍘绘帀iframe鐨勬粴鍔ㄦ潯锛屽姩鎬佽皟鏁寸獥鍙g殑楂樺害锛岃鍏惰兘澶熸樉绀鸿宓屽椤甸潰鐨勬墍鏈夊唴瀹 lt;/div> <!-- 闇€瑕佸姩鎬佽皟鏁撮珮搴︾殑iframe --> <div > <iframe name="domainB" src="" width="80%" scrolling="no" frameborder="0"$amp;>amp;$lt;/iframe> </div> <script type="text/javascript"> function resize(height) { //alert("resize"); document.getElementsByName("domainB")[0].height=height; } </script>
聽
agent.html
聽
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 鎴戞槸浠g悊椤甸潰鍝︼紒 <script type="text/javascript"> window.onload = invokeMethodInTopWindow; function invokeMethodInTopWindow() { //alert("璋冪敤鍚屽煙涓嬬殑鍑芥暟锛岄噸缃甶frame鐨勯珮搴 ); var domainA = document.parentWindow; var realHeight = domainA.location.hash.split("#")[1]; //last step:璋冪敤鏈€涓婂眰绐楀彛鐨勫嚱鏁帮紝閲嶇疆iframe鐨勯珮搴 parent.parent.resize(realHeight); //alert("realHeight:"+realHeight); //alert(document.parentWindow.name);//鑾峰彇瀹瑰櫒鎵€鍦ㄧ獥鍙g殑鍚嶇О domainA //error://alert(document.parentWindow.parent.name); //璁块棶澶辫触 锛氫笉鑳借闂甦omainB //alert(document.parentWindow.parent.parent.name);//鏈€椤跺眰window灞炰簬domainA锛屽洜姝ゅ彲浠ヨ闂 } //浣跨敤涓嶅悓鐨勬椂闂存埑璁剧疆iframe鐨剆rc灞炴€у悗锛屽氨涓嶇敤浣跨敤setInterval() //setInterval("invokeMethodInTopWindow()",100); </script> </body> </html>
聽
聽
domainB涓殑other.html
聽
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body onclick="proxy()"> <!-- 琚獳鍩熸墍宓屽叆鐨勯〉闈 --> <button type="button" onclick="btnClick()">鍒囨崲鏄剧ず</button> <div > 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 鍦↗avaScript涓紝鏈変竴涓緢閲嶈鐨勫畨鍏ㄦ€ч檺鍒讹紝琚О涓衡€淪ame-Origin Policy鈥濓紙鍚屾簮绛栫暐锛夈€ 杩欎竴绛栫暐瀵逛簬JavaScript浠g爜鑳藉璁块棶鐨勯〉闈㈠唴瀹瑰仛浜嗗緢閲嶈鐨勯檺鍒讹紝鍗矹avaScript鍙兘璁块棶涓庡寘鍚畠鐨勬枃妗e湪鍚屼竴鍩熶笅鐨勫唴瀹广€ 鎵€璋撳悓婧愭槸鎸囷紝鍩熷悕锛屽崗璁紝绔彛鐩稿悓銆 </div> <div > 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ 姣斿涓€涓粦瀹㈢▼搴忥紝浠栧埄鐢↖Frame鎶婄湡姝g殑閾惰鐧诲綍椤甸潰宓屽埌浠栫殑椤甸潰涓婏紝褰撲綘浣跨敤鐪熷疄鐨勭敤鎴峰悕锛屽瘑鐮佺櫥褰曟椂锛 浠栫殑椤甸潰灏卞彲浠ラ€氳繃Javascript璇诲彇鍒颁綘鐨勮〃鍗曚腑input涓殑鍐呭锛岃繖鏍风敤鎴峰悕锛屽瘑鐮佸氨杞绘澗鍒版墜浜嗐€ </div> <!-- 鍙嶅悜宓屽叆A鍩熺殑椤甸潰 --> <iframe name="domainA" src="" $amp;>amp;$lt;/iframe> <!-- script --> <script type="text/javascript"> //闅愯棌鎴栨樉绀篸iv function btnClick() { var div = document.getElementsByTagName("div"); for(var i in div) { if(i<div.length) div[i].style.display = (div[i].style.display == 'none') "block" : "none"; } } </script> <script type="text/javascript"> function proxy(){ //alert("btn click"); //鑾峰彇鏈〉闈㈢殑楂樺害 var scrollHeight = document.documentElement.scrollHeight; //alert("婊氬姩鏉¢珮搴 "+scrollHeight); //灏嗙獥鍙g殑楂樺害鍏堣缃埌灞炰簬domainA鐨刬frame鐨剆rc灞炴€т笂 var iframeDomainA = document.getElementsByName("domainA")[0]; //鐢╠omainA鐨勪竴涓〉闈綔涓轰唬鐞嗭紝鏈€缁堢殑鐩殑鏄В鍐斥€滃悓婧愮瓥鐣モ€濈殑闄愬埗 var url = "http://localhost:9000/agent"; /**鎶€宸э細閫氳繃鏃堕棿鎴宠娴忚鍣ㄦ瘡娆¢噸鏂板姞杞絠frame锛岃繖鏍锋瘡娆¢兘浼氳嚜鍔ㄨ缃宓屽鐨刬frame鐨勯珮搴︼紝閬垮厤浜嗕娇鐢╯etInterval()*/ iframeDomainA.src = url+ " time=" + new Date().getTime() + "#" + scrollHeight ; } window.onload = proxy; </script> </body> </html>
聽
聽