摘要:何時(shí)裝載完畢下面的代碼能正常運(yùn)行于所有的瀏覽器之上。由于元素包含于父級(jí)頁(yè)面中,因此以上方法均不存在跨域問(wèn)題。實(shí)際上提供了事件,但必須使用進(jìn)行綁定。代碼運(yùn)行時(shí)在本地直接用瀏覽器打開(kāi)的,地址欄是的頁(yè)面,只需改為訪(fǎng)問(wèn)就行。
父頁(yè)面獲取子頁(yè)面的window對(duì)象
/** * 在父頁(yè)面獲取iframe的window對(duì)象 * chrome:iframeElement. contentWindow * firefox: iframeElement.contentWindow * ie6:iframeElement.contentWindow */ function getIframeWindow(iframeElement) { return iframeElement.contentWindow; // return iframeElement.contentWindow || iframeElement.contentDocument.parentWindow; }父頁(yè)面獲取子頁(yè)面的document對(duì)象
/** * 在父頁(yè)面獲取iframe的document * chrome:iframeElement.contentDocument * firefox:iframeElement.contentDocument * ie:element.contentWindow.document * 備注:ie沒(méi)有iframeElement.contentDocument屬性。 */ function getIframeDocument(element) { console.dir(element); return element.contentDocument || element.contentWindow.document; };iframe何時(shí)裝載完畢
/** * 下面的代碼能正常運(yùn)行于所有的瀏覽器之上。 * 由于iframe元素包含于父級(jí)頁(yè)面中,因此以上方法均不存在跨域問(wèn)題。 * 實(shí)際上IE提供了onload事件,但必須使用attachEvent進(jìn)行綁定。 */ function iframeOnload() { var iframe = document.createElement("iframe"); iframe.src = "simpleinner.htm"; if (iframe.attachEvent) { iframe.attachEvent("onload", function () { alert("Local iframe is now loaded."); }); } else { iframe.onload = function () { alert("Local iframe is now loaded."); }; } document.body.appendChild(iframe); }利用onload和attachEvent,實(shí)現(xiàn)iframe高度自適應(yīng)
/** * 如果iframe的高度不足屏幕可視區(qū)域的高度,則iframe的高度 === 屏幕可視區(qū)域的高度 * 如果iframe的高度大于屏幕可視區(qū)域的高度,則iframe的高度 === iframe自己的高度 * */ function setFrameHeight(iframe) { var iframeDoc = iframe.contentDocument || iframe.contentWindow.document; var offsetHeight = iframeDoc.childNodes[1].offsetHeight; var clientHeight = document.documentElement.clientHeight||document.body.clientHeight; iframe.height = offsetHeight > (clientHeight-35) ? offsetHeight : (clientHeight-35); } function iframeOnload() { var iframe = document.getElementById("iframe"); if (iframe.attachEvent) { iframe.attachEvent("onload", function () { setFrameHeight(this); }); } else { iframe.onload = function () { setFrameHeight(this); }; } }在子頁(yè)面中獲取父頁(yè)面的window對(duì)象
/** * 存在跨域問(wèn)題 * 在子頁(yè)面中獲取父頁(yè)面的window對(duì)象 * 父頁(yè)面:window.parent * 適用于所有瀏覽器 */ console.log(window.parent);在子頁(yè)面中獲取頂層頁(yè)面
/** * 存在跨域問(wèn)題 * 在子頁(yè)面中獲取頂層頁(yè)面 * 頂層頁(yè)面:window.top * 適用于所有瀏覽器 */ console.log(window.top);在子頁(yè)面中獲取iframe的html
/** * 存在跨域問(wèn)題 * 在子頁(yè)面中獲取iframe的html * window.frameElement * (類(lèi)型:HTMLElement) * 適用于所有瀏覽器 */ console.log(window.frameElement);子頁(yè)面調(diào)用父頁(yè)面的方法
parent.window.parentMethod();父頁(yè)面調(diào)用子頁(yè)面的方法
FrameName.window.childMethod();BUG##Blocked a frame with origin "null" from accessing a cross-origin frame.
跨頁(yè)面操作涉及域的概念(origin),錯(cuò)誤的意思是:未捕獲的安全錯(cuò)誤:阻止了一個(gè)域?yàn)閚ull的frame頁(yè)面訪(fǎng)問(wèn)另一個(gè)域?yàn)閚ull的頁(yè)面。代碼運(yùn)行時(shí)在本地直接用瀏覽器打開(kāi)的,地址欄是file:///的頁(yè)面,只需改為localhost訪(fǎng)問(wèn)就行。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/102396.html
摘要:文件路徑,上線(xiàn)后,絲絲潤(rùn)滑無(wú)痛無(wú)癢,完美第四個(gè)版本,可以做更多注意哦,重點(diǎn)來(lái)咯盡早加載是減少首屏?xí)r間的關(guān)鍵引申閱讀,直接把到里是個(gè)不錯(cuò)的方案。 showImg(https://segmentfault.com/img/bVsmpw); 所謂 File Prefetching 就是在一個(gè)頁(yè)面加載成功后,默默去預(yù)加載后續(xù)可能會(huì)被訪(fǎng)問(wèn)到的頁(yè)面的資源。 前端資源預(yù)加載其實(shí)沒(méi)啥新鮮的,我們倒...
摘要:通常我們可以在后配置各種指定資源路徑,有如果你未指定的話(huà),則是使用規(guī)定的加載策略默認(rèn)配置就是同域這里和有一點(diǎn)瓜葛的就是和就是用來(lái)指定的有效加載路徑。 某大咖說(shuō): iframe是能耗最高的一個(gè)元素,請(qǐng)盡量減少使用某大牛說(shuō): iframe安全性太差,請(qǐng)盡量減少使用...wtf, 你們知不知道你們這樣澆滅了多少孩紙學(xué)習(xí)iframe的熱情和決心。 雖然,你們這樣說(shuō)的我竟無(wú)法反駁,但是ifram...
摘要:所謂同源是指協(xié)議域名端口三者相同,即便兩個(gè)不同的域名指向同一個(gè)地址,也非同源。那么怎樣解決跨域問(wèn)題的呢通過(guò)跨域跨域跨域跨域跨域資源共享代理跨域中間件代理跨域音樂(lè)教程老師有用到協(xié)議跨域后端在頭部信息里面設(shè)置安全域名公司后端給解決過(guò)持續(xù)更新中 JavaScript篇 如何獲取瀏覽器URL中查詢(xún)字符串中的參數(shù)? 1.封裝方法 getUrlArgs(url) { const args =...
摘要:所謂同源是指協(xié)議域名端口三者相同,即便兩個(gè)不同的域名指向同一個(gè)地址,也非同源。那么怎樣解決跨域問(wèn)題的呢通過(guò)跨域跨域跨域跨域跨域資源共享代理跨域中間件代理跨域音樂(lè)教程老師有用到協(xié)議跨域后端在頭部信息里面設(shè)置安全域名公司后端給解決過(guò)持續(xù)更新中 JavaScript篇 如何獲取瀏覽器URL中查詢(xún)字符串中的參數(shù)? 1.封裝方法 getUrlArgs(url) { const args =...
摘要:對(duì)于通過(guò)去下載文件時(shí)跨域的問(wèn)題有一個(gè)解決思路是自己寫(xiě)一個(gè)代理服務(wù)代理服務(wù)負(fù)責(zé)在服務(wù)端下載文件并配置好跨域相關(guān)的信息然后請(qǐng)求走代理服務(wù)進(jìn)行下載。 0. 概述 文件下載是web應(yīng)用中很常見(jiàn)的場(chǎng)景,在瀏覽器中下載文件, 最基本的方式就是——在頁(yè)面內(nèi)隱藏iframe, 然后將文件下載地址加載到iframe中, 從而觸發(fā)瀏覽器的下載行為。 此外, html5引入a標(biāo)簽的download屬性, ...
閱讀 482·2019-08-30 15:44
閱讀 897·2019-08-30 10:55
閱讀 2729·2019-08-29 15:16
閱讀 924·2019-08-29 13:17
閱讀 2801·2019-08-26 13:27
閱讀 568·2019-08-26 11:53
閱讀 2119·2019-08-23 18:31
閱讀 1882·2019-08-23 18:23