[英]Dynamics CRM 365 - Cannot access Xrm.Page.entity in HTML web ressource
我在我的聯系表單中添加了一個html資源,其中只包含一個小圖片,以便將它放在聯系人字段旁邊。 當用戶點擊它時,它會啟動一個javascript函數,我想在其中獲取表單特定字段的值。 該字段是聯系實體的屬性。 這是HTML Web資源:
<html>
<head>
<style type="text/css">
body
{
margin: 0;
padding: 0;
}
</style>
<script type="text/javascript">
function call() {
var phoneNumber = window.parent.Xrm.Page.getAttribute("mobilephone").getValue();
}
</script>
<meta>
</head>
<body style="word-wrap: break-word;">
<img onmouseover="this.style.cursor='pointer';" src="/webresources/new_/image/image.png" onclick="call()">
</body>
</html>
我也嘗試過獲取如下數據:
window.parent.Xrm.Page.data.entity.attributes.get("telephone1").getValue()
但它也不起作用: 無法讀取null的實體
問題是getAttribut返回null,盡管我想要的實體字段。 它總是未定義有人有想法嗎?
GetGlobalContext函數和ClientGlobalContext.js.aspx(客戶端引用)
在使用Web資源進行編程時,請使用GetGlobalContext函數來訪問上下文信息。 要在HTML Web資源中獲取GetGlobalContext函數,請包含對ClientGlobalContext.js.aspx的引用。
當您包含對位於Web資源目錄根目錄的ClientGlobalContext.js.aspx頁面的引用時,可以使用GetGlobalContext函數。
結合更多建議:
嘗試從window.parent.Xrm.Page
刪除window
。
添加到表單的HTML Web資源不能使用由表單中加載的JavaScript庫定義的全局對象。 HTML Web資源可以使用parent.Xrm.Page或parent.Xrm.Utility與表單中的Xrm.Page或Xrm.Utility對象進行交互 ,但是使用父表單無法訪問由表單腳本定義的全局對象。 您應該在HTML Web資源中加載HTML Web資源所需的任何庫,這樣它們就不依賴於表單中加載的腳本。
嘗試從表單腳本傳遞輸入。
對於網頁(HTML)Web資源,請使用setSrc方法直接操作querystring參數。
在HTML頁面中,可以使用JavaScript中的window.location.search屬性訪問這些參數。
如果你不能采取優秀的詹姆斯伍德解決方案嘗試:
1.您必須檢查您的商品是否在iframe中
您可以從以下腳本中獲得靈感:
Xrm.Page.ui.controls.get('id_iframe').getObject().onload= function() {
var element = Xrm.Page.ui.controls.get('id_iframe').getObject().contentWindow.document.getElementById('id_element_inside_iframe');
console.log(element);
};
Xrm.Page.ui.controls.get('id_iframe')。getObject():返回HTML對象iFrame
你可能會遇到一個叫做問題的事件。
您可以從以下腳本中獲得靈感:
<HTML>
<BODY onload="SetupEvents()">
<label id="myLabel" >Click me</label>
</BODY>
<SCRIPT>
function DoTheThing() { alert('thing was done'); }
function SetupEvents() {
addEvent( document.getElementById('myLabel'),'click', function () { DoTheThing(); });
}
function addEvent(element, evnt, funct){
if (element.attachEvent)
return element.attachEvent('on'+evnt, funct);
else
return element.addEventListener(evnt, funct, false);
}
</SCRIPT>
</HTML>
假設您的webresource位於根標簽處...然后您必須首先添加ClientGlobalContext引用
<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
完成后,您應該能夠通過首先刪除"window"
部分來獲取函數的屬性值
<script type="text/javascript">
function call() {
var phoneNumber = parent.Xrm.Page.getAttribute("mobilephone").getValue();
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.