大家都知道Js有同源策略,就是主網域不同嵌套的iframe不允許Js溝通的。
例如我有一個網站,網站中要嵌入其網站的頁面。那我可以使用iframe引用第三方網站的地址即可。
但是問題也來的iframe的高度是固定的不能與第三方網站很好的融合,又例如第三方網站使用了瀑布流插件,要滾動加載自動計算高度,那麼先說跨域:iframe主網域不同跨域方法,假如網站A.com B.com A 裡面放入一個iframe 引用了B.com,這種情況下B.com裡面的Js是無法訪問到A.com的。 JS跨域必須是同源,就是同一個主域名,那腫呢?
我們可以在B.com中引入一個iframe,暫且叫C吧 這個iframe載入A.com中的一個網頁。這樣同源就有了B.com中的iframe中的網頁就可以和A.com通訊了。下面只要B和C通訊,讓C和A通訊就完成B->A通訊,這樣當B高度變化時通知C,讓C通知A把iframe高度調整。
B和C通訊,其實透過url位址就可以實現通訊了,B.com iframe設定為隱藏,改變src位址時候C就可以接收。
廢話不說了上碼
A.com/index.html
<html> <script src="{$smarty.const.STATIC_URL}/js/jquery-1.7.1.min.js"></script> <script> var test = function() { $('#h1').html('test'); } </script> <body> <h1 id="nba-alltosun-net">nba.alltosun.net</h1> <iframe id="ifm" width="760" height="100" src="http://***.sinaapp.com/"></iframe> </body> </html>
B.com/index.html
<html> <head></head> <body> <h1 id="appsina-com">**.appsina.com</h1> <button id="button">设置高度</button> <div id="div" style="height:200px;display:none;"></div> <script src="http://nba.alltosun.net/js/jquery-1.7.1.min.js"></script> <script> $(function(){ window.ifrH = function(e){ var searchUrl = window.location.search; var b = null; var getParam = function(url, param) { var q = url.match(new RegExp( param + "=[^&]*")), n = ""; if (q && q.length) { n = q[0].replace(param + "=", ""); } return n; } var f = getParam(searchUrl,"url"), h = getParam(searchUrl, "ifmID"), k = getParam(searchUrl, "cbn"), g = getParam(searchUrl, "mh"); var iframeId = 'testiframe'; var iframe = document.getElementById(iframeId); var divId = 'alltosun'; if (!iframe){ var iframe = document.createElement('iframe'); iframe.id = iframeId; iframe.style.display = "none"; iframe.width = 0; iframe.height = 0; document.body.appendChild(iframe); } if (e && e.type == "onload" && h) { b.parentNode.removeChild(b); b = null; } if (!b) { b = document.createElement("div"); b.id = divId; b.style.cssText = "clear:both;" document.body.appendChild(b); } var l = b.offsetTop + b.offsetHeight; iframe.src = (decodeURIComponent(f) || "http://*****/test2") + "&h=" + l + "&ifmID=" + (h || "ifm") + "&cbn=test" + "&mh=" + g + "&t=" + ( (+ new Date())); if (e && e.type =="onload") { window.onload = null; } } window.onload = function() { ifrH({type: "onload"}); } // ifrH(); $('button').click(function(){ $('div').show(); ifrH(); }) }) </script> </body> </html>
C 代理文件
<script> var search = window.location.search, getSearchParam = function (search, key) { var mc = search.match (new RegExp ( key + "=([^\&]*)") ), ret=""; mc && mc.length && (ret = mc[0].replace( key + "=","")); return ret; }, // 参数h h = getSearchParam(search,"h"), ifmID = getSearchParam(search,"ifmID"), cbn = getSearchParam(search,"cbn"), // 宽高 mh = getSearchParam(search,"mh") || h, isFunction = function(fn){ return !!fn && !fn.nodeName && fn.constructor != String && fn.constructor != RegExp && fn.constructor != Array && (/function/i).test(fn + ""); }; try{ if(parent && parent.parent){ ifm = parent.parent.document.getElementById(ifmID); ifm && mh && (ifm.height=mh); fn=parent.parent[cbn]; isFunction(fn) && fn.call(); ifm=null; } }catch(ex){ console.log(ex); } </script>

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境