2011-10-27 60 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