分享方式:


為行動電話和平板電腦用 Dynamics 365 撰寫指令碼並偵錯

 

發佈日期: 2017年1月

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

手機專用 Microsoft Dynamics 365 和 平板電腦專用 Microsoft Dynamics 365 使用用於 Web 應用程式的相同表單定義。 任何您加到表單事件常式或 Web 應用程式功能表命令的 JavaScript 程式碼可能也會在 Dynamics 365 行動用戶端 (行動電話或平板電腦) 上執行。 您需要注意部分差異。

本主題內容

某些 Xrm.Page 或視窗物件函數無法在行動電話和平板電腦用 Dynamics 365 中運作

指定哪些程式碼會在行動電話和平板電腦用 Dynamics 365 中執行

指定哪些命令會顯示在行動電話和平板電腦用 Dynamics 365

請注意在 Dynamics 365 行動用戶端與瀏覽器中的 Web 應用程式的差異

針對行動電話和平板電腦用 Dynamics 365 的指令碼偵錯

某些 Xrm.Page 或視窗物件函數無法在行動電話和平板電腦用 Dynamics 365 中運作

Dynamics 365 行動用戶端不允許會封鎖指令碼執行的任何函數。 一般的 JavaScript 函數,例如 window.alertwindow.confirm、以及 window.prompt 不會依照您的預期運作,或者會產生錯誤。

使用 Xrm.UtilityalertDialogconfirmDialog 函數來顯示訊息給使用者。 這些函數運作的方式有別於視窗函數,因為它們不會停止指令碼的運作,直到使用者下令關閉。 他們提供回撥函數,允許使用者輸入的非同步回覆。 使用 window.confirmwindow.prompt、或其他會阻擋執行指令碼的原生視窗函數,會顯示傳遞錯誤訊息。

備註

如果您在表單指令碼中使用 window.alert,您設定的訊息會自動顯示 (使用 Xrm.Utility.alertDialog),而不回撥指定的函數,但這是暫時且已取代。 您應該使用 window.alert 移動任何程式碼,來使用 Xrm.Utility.alertDialog

Dynamics 365 行動用戶端也不支援 window.open 方法。 如果您想要開啟新的或現有實體記錄的實體表單,請改用 Xrm.Utility.openEntityForm

下列方法無法在 Dynamics 365 行動用戶端 (行動電話和平板電腦) 運作。

Xrm.Page.context.getCurrentTheme

Xrm.Page.uiViewPort 方法

Xrm.Page.data.entity.getDataXml

Xrm.Page.ui.navigation.items 集合

Xrm.Page.ui.formSelector 物件方法

Xrm.Page.ui tab.setDisplayState

大多數的函數會執行空的函數且不回傳資訊。 如果您預期從這些函數之中收到回傳值,將會得到未定義的值。

此外,行動電話用 Dynamics 365 不支援 Web 資源和 IFRAMES,因此這些控制項的用戶端 API 無法運作。 但是 平板電腦用 Dynamics 365 支援 Web 資源及 IFRAMES 的用戶端 API。 其他資訊:Web 資源及 IFRAME 控制項方法

指定哪些程式碼會在行動電話和平板電腦用 Dynamics 365 中執行

當用戶端 API 功能不一樣的時候,您應該包含下列作法來分離您套用到每個用戶端的邏輯。

var isCrmForMobile = (Xrm.Page.context.client.getClient() == "Mobile")
if (isCrmForMobile)
{
 // Code for CRM for phones and tablets only goes here.
}
else
{
 // Code for web browser or CRM for Outlook only goes here.
}
// Code for any client goes here.

指定哪些命令會顯示在行動電話和平板電腦用 Dynamics 365

當您在自訂命令列 (功能區) 命令使用 <JavaScriptFunction> (RibbonDiffXml) 時,您也可以用 Xrm.Page.context.client.getClient 分離您的程式碼。 如果您要執行的動作不會使用 Dynamics 365 行動用戶端,您應包含顯示規則,如此就不會出現在 平板電腦用 Dynamics 365。 根據預設,任何定義的命令將會在 Dynamics 365 行動用戶端中顯示,除非明確設定不要顯示。 做為規則,您應該定義以下顯示規則並包含在所有命令,除非您知道使用 Dynamics 365 行動用戶端可以運作。

<DisplayRule Id="My.HideOnModern">
 <CommandClientTypeRule Type="Modern"
                        InvertResult="true" />
</DisplayRule>

請注意在 Dynamics 365 行動用戶端與瀏覽器中的 Web 應用程式的差異

其實除了在 某些 Xrm.Page 或視窗物件函數無法在行動電話和平板電腦用 Dynamics 365 中運作 描述的功能外,您也應該要知道其他的不同。

  • 複合欄位
    Dynamics 365 行動用戶端會以不同方式實作複合欄位。Dynamics 365 行動用戶端不包含複合屬性。 它們會自動替代組成屬性並顯示。其他資訊:為複合屬性撰寫指令碼

針對行動電話和平板電腦用 Dynamics 365 的指令碼偵錯

因為 行動電話用 Dynamics 365 或 平板電腦用 Dynamics 365 是應用程式,所以一般可以用在瀏覽器中的 JavaScript 偵錯工具並不能使用。 我們建議您進行下列程序來測試並針對表單指令碼與功能區命令偵錯:

  1. 使用 Web 應用程式,仔細測試您的指令碼

  2. 在使用網頁瀏覽器做部分的測試時,當你使用 Xrm.Page.context.client.getClient 檢驗用戶端時,請取消準則並驗證使用者在使用 Dynamics 365 行動用戶端時的體驗邏輯是否適當。Dynamics 365 行動用戶端可用的 API 是網頁瀏覽器可用 API 的子集,所以您應該可以在網頁瀏覽器中測試其他流程。

  3. 如果可能的話,請在安裝了 Windows 10 和 Microsoft Visual Studio 的電腦上安裝 Dynamics 365 行動用戶端。 在您想要使用Visual Studio啟動偵錯工具時候和地方,包括偵測工具陳述式。

  4. 最後,使用 Xrm.Utility.alertDialog 在 Dynamics 365 行動用戶端顯示您程式碼內的值。

另請參閱

撰寫 Microsoft Dynamics 365 表單的程式碼
使用表單和欄位事件
使用 Xrm.Page 物件模型
為複合屬性撰寫指令碼
表單指令碼快速參考
用戶端程式設計參考
命令列或功能區簡介

Microsoft Dynamics 365

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