问题描述
我最近获得了一个用于网络电话网络客户端的 JavaScript API。 我想从 CRM 启动这个客户端并将我的 CRM 表单数据传递给它,我创建了一个自定义功能区按钮,该按钮必须调用该 HTML 页面并将相关数据传递给它。
功能区按钮应该启动网络电话的 URL,但同时将参数传递给 HTML 页面中的 JavaScript 函数,我是在功能区上使用 JavaScript 操作还是使用 URL 操作,如果我使用 URL 我该怎么做将数据传递给 JScript 函数?
为了更清楚地说明这一点,我在 CRM 中有一个 Contact 实体,它有一个手机号码,我想将它作为参数传递给 HTML 页面,该页面具有我想用于网络电话客户端的 JavaScript 函数
1楼
Mauro De Biasio
0
2015-08-18 22:56:08
如果您使用 url 调用外部页面,则可以在调用页面后将参数附加为“GET”:
page.html?phone=123123
那么您将能够从您的 html 页面访问它,因为其他帖子指出,您应该没问题。 此外,如果您将其用作页面中的嵌入式 Web 资源,您将能够通过 windows.parent.Xrm 访问表单属性
2楼
Farzad Moghaddampoor
0
2020-06-04 09:14:05
将下面的行添加到 html 的 head 标签:
<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
还要添加此代码以在加载 html 时运行:
<script src="OnLoadHtml.js" type="text/javascript"></script>
在 javascript OnLoadHtml.js 中添加以下代码:
document.onreadystatechange = function () {
//When document is ready
if (document.readyState == "complete") {
//Get sent arguments in url
var arguments = GetQueryArgument();
//Decode encoded arguments
var decodedArguments = decodeURIComponent(arguments)
}
}
//Gets query passed argument
function GetQueryArgument()
{
/*Get the any query string parameters and load them
into the vals array*/
var result = "";
var vals = new Array();
if (location.search != "") {
vals = location.search.substr(1).split("&");
for (var i in vals) {
vals[i] = vals[i].replace(/\+/g, " ").split("=");
}
//look for the parameter named 'data'
var found = false;
for (var i in vals) {
if (vals[i][0].toLowerCase() == "data") {
result = vals[i][1];
found = true;
break;
}
}
if (!found)
{
result = "";
}
}
else
{
result = "";
}
return result;
}
要将结果从 html 返回到 javascript:
将下面的行添加到 html 的 body 标签中:
<input id="btnOk" type="button" class="NormalButton" value="OK" onclick="BtnOK_OnClick();">
并在下面为 javascript 部分添加此代码:
//On ok button pressed
function BtnOK_OnClick() {
debugger;
console.log("Ok is clicked");
var result = GetResult();
//Control value is not empty
if (result === "")
{
retrun;
}
Mscrm.Utilities.setReturnValue(result);
try
{
closeWindow(true); // Close the dialog box
}
catch (e)
{
console.log("Error happened at closing.");
}
}