在表單使用 IFRAME 和 Web 資源控制

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

IFRAME 與 Web 資源控制項會利用 HTML IFRAME 元素,來內嵌頁面中其他位置的內容。

注意

您為表單選擇的設計,也用於 Microsoft Dynamics 365 for Outlook 讀取窗格和 平板電腦專用 Microsoft Dynamics 365 使用的表單。 使用 Dynamics 365 for Outlook 讀取窗格時,不會顯示 Web 資源和 IFRAMEs,不過,平板電腦用 Dynamics 365 支援它們。 如果您的 IFRAME 依靠的是存取 Xrm.Page 頁面物件或任何表單事件常式的權限,您應該設定 IFRAME,這麼一來,預設就無法看見。

您可以使用一個 IFRAME 用表單顯示另一個網站表單的內容,例如在一個 ASP.NET 頁面中。 不支援在其他實體表單的內嵌 IFrame 中顯示實體表單。

您可以使用下列其中一項 Web 資源來用表單顯示 Web 資源的內容:

注意

包含 Silverlight 只是為了回溯相容性,不建議使用。其他資訊:Silverlight (XAP) Web 資源

以下區段說明如果您希望這些控制項顯示靜態內容以外的內容,您可以使用的選項。

本主題內容

選取是否限制跨框架指令碼

傳送關於紀錄相關資訊。

傳遞表單資料

變更 URL

選取是否限制跨框架指令碼

在您並不完全信賴 IFRAME 顯示的內容時,請使用 [在支援的地方限制跨框架指令碼] 選項。 當選擇此選項時,IFRAME 擁有列於下表的屬性組。

屬性

描述

security=”restricted”

只有 Internet Explorer 6 版以後的版本支援此屬性。 安全性屬性會將使用者安全性設定「受限的網站」套用至 IFRAME 的來源檔案。 (區域設定可在 [網際網路選項] 對話方塊中的 [安全性] 索引標籤中找到。) 根據預設,指令碼不會在受限的網站區域啟用。 藉由變更這個區域的安全性設定,可能會發生不同的負面結果,包括允許指令碼執行。 如需詳細資訊,請參閱安全性屬性

sandbox=””

如需支援此屬性的瀏覽器,IFRAME 中的內容基本上只受限於只顯示資訊。 下列限制可能已套用:

  • 已停用瀏覽器外掛程式。

  • 已停用表單指令碼。

  • 已停用與其他瀏覽內容的連結。

  • 就算網域相同,內容也會被視為來自不同網域。

屬性由 W3C 定義,且支援下列瀏覽器:

  • Internet Explorer 10、Internet Explorer 11 和 Microsoft Edge

  • Google Chrome

  • Apple Safari

  • Mozilla Firefox

如需有關沙箱屬性的詳細資訊,請參閱:

啟用跨網域的 IFrame 通訊

有時候您會啟用包含不同網域內容的 IFRAME 通訊。Window.postMessage 是瀏覽器方法,可為 Internet Explorer 的 Internet Explorer 8 以後的版本提供此功能。Google Chrome、Mozilla Firefox、和 Apple Safari 也提供支援。 如需更多關於使用 postMessage 的詳細資訊,請參閱下列部落格文章:

傳送關於紀錄相關資訊。

您可以透過傳遞參數至 URL (於控制項中定義) 來提供相關資訊。 在該框架顯示的頁面必須可以傳至其中的參數。 所有在下列工作表中的參數都會被傳遞,如果 IFRAME 或 web 資源都透過使用 [將記錄物件類型代碼及唯一識別碼傳遞為參數] 選項設定. 對應的表單 XML 元素是 <PassParameters> (FormXml)

您可以指定下表中的所有參數是否要傳送。

參數

名稱

描述

typename

實體名稱

實體的名稱。

type

實體類型代碼

整數,唯一識別特定組織的實體。

id

物件 GUID

代表記錄的 GUID。

orgname

組織名稱

組織唯一名稱。

userlcid

使用者語言碼

目前使用者使用的語言識別代碼。

orglcid

組織語言碼

語言識別代碼,代表組織的基礎語言。

語言碼是四位數或五位數的地區設定識別碼。 您可以在地區設定識別碼 (LCID) 表找到有效的地區設定識別碼值。

注意

建議您使用實體名稱而不是類型代碼,因為 Microsoft Dynamics 365 組織之間自訂實體的實體類型代碼可能不同。

範例

下列範例顯示不使用參數的 URL。

http://myserver/mypage.aspx

下列範例顯示使用參數的 URL。

http://myserver/mypage.aspx?id=%7bB2232821-A775-DF11-8DD1-00155DBA3809%7d&orglcid=1033&orgname=adventureworkscycle&type=1&typename=account&userlcid=1033

讀取傳遞的參數

傳遞的參數一般來說都會在目標 .aspx 中讀取,使用的是 HttpRequest.QueryString 屬性。 在 HTML 頁面中,可以透過使用 JavaScript 的 window.location.search 屬性來存取參數。 如需詳細資訊,請參閱 HttpRequest.QueryString 屬性搜尋屬性

傳遞表單資料

使用屬性中的 getValue 方法,其中包含您要傳遞到其他網站的資料的屬性,並撰寫別的網頁可以使用的查詢字串引數。 然後使用 欄位 OnChange 事件IFRAME OnReadyStateComplete 事件、或是 索引標籤 TabStateChange 事件 以及 setSrc 方法來附加您的參數至 IFRAME 或 Web 資源的 src 屬性。

如果您使用資料參數傳遞資料至 Silverlight Web 資源,您可以使用 getDatasetData 方法來操作透過資料參數傳遞的值。 如需網頁 (HTML) Web 資源,請使用 setSrc 方法來直接操作 querystring 參數。

避免使用 OnLoad 事件。IFRAMES 與 Web 資源非同步載入,而且這個框架在 Onload 事件指令碼完成前,可能無法完成載入。 這可能會導致 IFRAMEsrc 屬性或您變更的 Web 資源受 IFRAME 的預設值或網路資源 URL 屬性覆寫。

變更 URL

您可能想要變更 IFRAME 的目標,基於資料在表格中或使用者離線工作的考量。 您可以動態設定目標 IFRAME。

注意

當您為 IFRAME 變更目標頁面時,參數不會自動傳遞至 URL。 您必須在使用 setSrc 方法之前,將查詢字串參數附加至 URL。

範例

下列範例顯示如何為設定 IFRAME 的 src 屬性以及參數 (使用選項組欄位的 onChange 事件)。

//Get the value of an option set attribute
var value = Xrm.Page.data.entity.attributes.get("new_pagechooser").getValue();
var newTarget = "";
//Set the target based on the value of the option set
switch (value) {
    case 100000001:
        newTarget = "http://myServer/test/pageOne.aspx";
        break;
    default:
        newTarget = "http://myServer/test/pageTwo.aspx";
        break;
}
//Get the default URL for the IFRAME, which includes the 
// query string parameters
var IFrame = Xrm.Page.ui.controls.get("IFRAME_test");
var Url = IFrame.getSrc();
// Capture the parameters
var params = Url.substr(Url.indexOf("?"));
//Append the parameters to the new page URL
newTarget = newTarget + params;
// Use the setSrc method so that the IFRAME uses the
// new page with the existing parameters
IFrame.setSrc(newTarget);

另請參閱

撰寫 Microsoft Dynamics 365 表單的程式碼
使用 JavaScript 搭配 Microsoft Dynamics 365
表單指令碼快速參考

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權