在表单加载时设置IFRAME的src,避免加载竞争

时间:2017-07-20 22:05:00

标签: javascript iframe dynamics-crm

我正在考虑在表单中使用IFRAME,并想知道避免传统IFRAME加载竞争问题的正确方法是什么。

我认为我可以简单地在表单的src事件处理程序中调用IFRAME的OnLoad,因为(source):

  

加载事件在文档加载过程结束时触发。在   至此,文档中的所有对象都在DOM中,而且都是   图像,脚本,链接和子框架已完成加载。

但是MSDN说(粗体添加):

  

避免使用OnLoad事件。 IFRAMES和网络资源加载   异步,帧可能没有完成加载之前   Onload事件脚本完成。这可能会导致src属性   您更改的IFRAME或Web资源将被覆盖   IFRAME或Web资源URL属性的默认值。

如果是这样,设置IFRAME src的正确方法是什么?

注意:我考虑过使用IFRAME的OnReadyStateComplete事件,这意味着:在表单的脚本中有一个事件处理程序,在事件触发时设置src,并使用一个标志来指示它已设置(这样我赢了进入一个无限负载循环),但它似乎是一个旁路。

1 个答案:

答案 0 :(得分:1)

我对SetSrc函数没有任何问题,我使用Form OnLoad事件。

一些示例代码

// Get MAT IFrame control
var MATRepiFrame = Xrm.Page.ui.controls.get("IFRAME_MATGraph");
//Setup the URL
MATTargetUrl = serverUrl + '/crmreports/viewer/viewer.aspx?action=run&context=records&id=%7b092E3880-8266-E711-80DD-005056BD212E%7d&recordstype=1&records=' + accountId;
//Set the source
MATRepiFrame.setSrc(MATTargetUrl);

有关详细信息,请参阅此网页:https://msdn.microsoft.com/en-us/library/gg328034.aspx