2011-10-27 212 views
0

我正面临着MS CRM 2011上的IFrame问题。我试图生成HTML代码并将其写入IFrame。我对CRM开发很陌生,所以我希望你能指导我解决问题。MS Crm 2011 JavaScript Iframe功能

通过JavaScript生成HTML内容(IframeHTML)后,我尝试将该内容写入IFrame,然后重新加载整个Form。一切工作正常,直到我达到我的最后一个命令

var control = document.getElementById("IFRAME_name"); 
control.contentWindow.document.open(); 
control.contentWindow.document.write(IframeHTML); 
control.contentWindow.document.close(); 
control.location.reload(true); 

脚本在形式的OnLoad执行的,但它给了我,

访问是在拒绝

警报结束。

如果我更换第一行:

var control = Xrm.Page.ui.controls.get("IFRAME_name"); 

它告诉我

文件不被支持。

我不确定如果我认识到这里的问题是什么,那么任何帮助都会很好。

+0

是的,你不能使用Xrm.Page来获得IFRAME,所以你有第一块代码看起来不错。我在CRM 2011中使用了非常相似的代码(见下文),它工作正常,所以我假设你的错误是由于其他原因。 var iFrame = document.getElementById(“IFRAME_name”); var doc = iFrame.contentDocument; if(doc == undefined || doc == null){ doc = iFrame.contentWindow.document; } doc.open(); doc.write(IframeHTML); doc.close(); –

+0

实际上,差异可能在control.location.reload(true)行中。出于任何原因你需要这行代码吗? –

+0

你有没有想过这个? – Polshgiant

回答

0

您必须在IFRAME属性中激活Crossframe Scripting。

你有没有做到这一点?

关于Xrm.Page电话,你可以使用

var control = Xrm.Page.ui.controls.get("IFRAME_name").getObject(); 

这是支持的方式来获得IFRAME,所以你应该使用的IFRAME。

+0

是的,我已经这么做了......我正在使用的命令是对的吗? – user1016077

+0

你在IFRAME中加载了一个文档吗?你想在哪里放置生成的代码? –

+0

我正在创建onload(来自Iframe所在的表单)一些Html内容并将其放入Iframe本身。这只是简单的HTML。在Crm 4上工作得很好,但在Crm 2011上却不行。我不知道是否因为Crm 4和Crm 2011之间的js语法的差异...我没有在Iframe中加载外部文档,我只是想让Iframe显示我给它的内容... – user1016077