2014-01-16 99 views
0

我不擅长编程,并且无法在我的主页中加载iframe。如何在主内容完全加载时加载iframe

主页面和iframe不在同一个域中,但我可以修改每个域。我的主页由CMS(Joomla)管理,我的Iframe是一个使用ArcGIS API(3.7版)和Dojo(1.9版)的JavaScript应用程序。

我只想在主页完全加载时在我的iframe中加载JavaScript代码。

这里是我的iframe的JS代码:

require([ 
    "esri/map", 
    "dojo/domReady!"], function(Map) { 
    var map = new esri.Map("mapDiv"); 
    ... 
}); 

预先感谢您的帮助! Magalie。 Magalie。

回答

0

我几乎认为,为了让您知道iframe已经完全加载,您需要与iframe进行交互。 Iframe会发布一条消息,当它已经完成加载,这将是你需要捕获的点..

只要基本的iframe相关的事件存在,你只能得到onLoad事件,这是当iframe已经开始加载,没有完成加载。

+0

我想@Magalie正在问如何让iframe知道主页面被加载,而不是其他方式。 :) – Juffy

0

看看Javascript的postMessage功能 - 有一个很好的例子来回传递消息在iframe here之间来回传递。当你的父文档加载完成时,您可以使用它告诉IFRAME:

iframe = document.getElementById('content'); 
iframe.contentWindow.postMessage('finished_loading', 'http://remote-domain.com'); 

和iframe中可以听使用:

window.addEventListener('message', doStuffOnceParentLoaded, false); 

window.attachEvent("onmessage", doStuffOnceParentLoaded, false); 

在IE浏览器,因为标准是为了其他人。

请记住,您可能最终会遇到奇怪的不一致定时问题 - 如果您的iframe在父装入后完成装入,它可能不会注册以在事件发送之前侦听事件。

+0

对不起,我的沉默,并感谢您的答案。 我同时在几个项目上工作!我会很快测试你的建议,并给你回报。 – Magalie

相关问题