0

我最近获得了一个用于网络电话网络客户端的 JavaScript API。从 CRM 我想启动这个客户端并将我的 CRM 表单数据传递给它,我创建了一个自定义功能区按钮,它必须调用该 HTML 页面并将相关数据传递给它。

功能区按钮应该启动到网络电话的 URL,但同时将参数传递给 HTML 页面中的 JavaScript 函数,我是在功能区上使用 JavaScript 操作还是使用 URL 操作,如果我使用 URL,我该怎么做将数据传递给 JScript 函数?

为了更清楚地说明这一点,我在 CRM 中有一个联系人实体,它有一个手机号码,我想将它作为参数传递给 HTML 页面,该页面具有我想用于网络电话客户端的 JavaScript 功能

4

2 回答 2

0

如果您使用 url 调用外部页面,您可以将参数附加为“GET”,因此在调用页面后:

page.html?phone=123123

那么您将能够从您的 html 页面访问它,因为其他帖子指出Get url parameter jquery 或 How to Get Query String Values In js应该没问题。此外,如果您将其用作页面中的嵌入式 Web 资源,您将能够通过 windows.parent.Xrm 访问表单属性

于 2015-08-18T22:56:08.410 回答
0

将下面的行添加到 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.");
    }
}
于 2020-06-04T09:14:05.213 回答